[급질!!!]"자바로 패래럴(병렬,프린터)포트 이용해 신호보내기"부탁드립니다^^;;
돋되다
안녕하세요.
다름이 아니고 제가 학교에서 유무선 소켓통신을 이용해
서버에서 신호를 받아서 AVR을 이용해 모터를 제어해모형엘리베이터를
움직이려합니다.
패래럴포트로 신호를 보내야 하는데 C++은
DlPortWritePortUchar(address, pin num)
명령어를 이용해 쉽게 패래럴 포트로 신호를 보냈는데
자바에서는 javax.comm api를 이용해야 한다고 나와있어
java I/O책도 보고 이리저리 뒤져서 소스를 짜긴 했다만
아직 기판이 완성되지 않아 이게 맞는지 모르겟습니다.
c++처럼 주소는 어디에 넣고 핀넘버도 어디에 넣어야
할지 모르겟습니다. 어디를 찾아바도 나와있지
않은 듯 하네요.
고수님들 답변부탁드립니다^^
아래는 엉성한 소스입니다. 다른부분은 대충 여러 소스 베끼면서 짯는데 빨간부분은 도저히 모르겟습니다.;;
참고로 이 소스는 서버부분의 소스입니다^^
import java.io.*;
import java.net.*;
import java.util.*;
import javax.comm.*;
class Server {
final static int PORT = 8001;
ServerSocket server = null;
Vector clients = new Vector(); class Client extends Thread {
Socket sock = null;
DataInputStreamis = null;
DataOutputStreamdos = null;
OutputStream os = null;
BufferedOutputStream bos = null;
CommPortIdentifier portId =null;
CommPort port =null;
Client (Socket sock) throws IOException {
this.sock = sock;
dos = new DataOutputStream(sock.getOutputStream());
is = new DataInputStream(sock.getInputStream());
portId = CommPortIdentifier.getPortIdentifier(portname);BRme);
port = portId.open(Application Name, 30000); //정확이 이부분(포트네임,어플리케이션네임)에 무엇이 들어가야 할지 모르겟네요.;;//
os = port.getOutputStream();
bos = new BufferedOutputStream(os);
start();
}
public void run() {
try {
while(true) {
String line = is.readUTF();
System.out.println(line);
if(line.equals(floor1)) bos.write(1); //1을 내보내면 1번핀을가리킬것같아 하였습니다만..;;//
else if(line.equals(floor2)) bos.write(2);
else if(line.equals(floor3)) bos.write(3);
else{
close();
break;
}
Server.this.broadcast(line);
}
}catch(IOException ie) {
System.err.println(getName()+:IOException.+ie.getMessage());
close();
}
}
public void close() {
synchronized(Server.this) {
try { if (bos != null) bos.close(); } catch (Exception e1) {}
try { if (port != null) port.close(); } catch (Exception e1) {}
try { if (is != null) is.close(); } catch (Exception e1) {}
try { if (dos != null) dos.close(); }catch(Exception e1) {}
try { if (sock != null) sock.close(); } catch (Exception e1) {}
sock = null;
}
}
}
public Server() {
try {
server = new ServerSocket(PORT);
} catch (IOException ie) {
System.err.println(Cannot create server socket);
System.exit(1);
}
while (true) {
try {
Socket sock = server.accept();
Client client = new Client(sock);
synchronized (this) {
clients.addElement(client);
}
} catch (IOException ie) {
System.err.println(IOException : + ie.getMessage());
}
}
}
public static void main(String args[]) {
new Server();
}
private synchronized void broadcast(String message) {
for (Enumeration enum=clients.elements(); enum.hasMoreElements(); )
{
Client client = (Client) enum.nextElement();
if(client == null)
continue;
if(client.sock == null) {
clients.removeElement(client);
continue;
}
try {
client.dos.writeUTF(message);
}catch(Exception e) {}
}
}
}