۱۱-شهریور-۱۳۸۹, ۰۲:۳۱:۵۹
ابتدا javax.comm , javax.comm.properties & wn32com.dll را از لینک زیر دانلود کنید :
http://milimilimilson.persiangig.com/javaxcomm.zip
فایل زیپ را extract کنید حالا javax.comm and javax.comm.properties را در آدرسjdk/jre/lib و(در صورت وجود مشکل).../lib/ext آدرس قرار دهید و wn32com.dll رانیز در ادرسjdk/jre/bin قرار دهید
برای اینکه مطمئن بشین پکیج درست نصب شده از کد زیر استفاده کنین :
حالا برنامه رو بسازین و اجراش کنین ( مثل روش پایین )
C:>javac ListPorts.java
C:>java ListPorts
Serial port: COM7
Serial port: COM10
Serial port: COM3
Parallel port: LPT1
Parallel port: LPT2
اگه خروجی شما شبیه به این بود پکیج درست نصب شده است.
من یه برنامه نوشتم که بوسیله اون می تونین اطلاعات com4 رو بخونین و روی اون بنویسین ( می تونین به هر com port دیگه تغییرش بدین)
COM4chat.java :
myFrame.java :
http://milimilimilson.persiangig.com/javaxcomm.zip
فایل زیپ را extract کنید حالا javax.comm and javax.comm.properties را در آدرسjdk/jre/lib و(در صورت وجود مشکل).../lib/ext آدرس قرار دهید و wn32com.dll رانیز در ادرسjdk/jre/bin قرار دهید
برای اینکه مطمئن بشین پکیج درست نصب شده از کد زیر استفاده کنین :
کد:
import javax.comm.*;
import java.util.*;
/** List all the ports available on the local machine. **/
public class ListPorts
{
public static void main (String args[])
{
Enumeration port_list = CommPortIdentifier.getPortIdentifiers();
while (port_list.hasMoreElements())
{
CommPortIdentifier port_id = (CommPortIdentifier)port_list.nextElement();
if (port_id.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
System.out.println ("Serial port: " + port_id.getName());
}
else if (port_id.getPortType() == CommPortIdentifier.PORT_PARALLEL)
{
System.out.println ("Parallel port: " + port_id.getName());
}
else
System.out.println ("Other port: " + port_id.getName());
}
} // main
} // class PortList
C:>javac ListPorts.java
C:>java ListPorts
Serial port: COM7
Serial port: COM10
Serial port: COM3
Parallel port: LPT1
Parallel port: LPT2
اگه خروجی شما شبیه به این بود پکیج درست نصب شده است.
من یه برنامه نوشتم که بوسیله اون می تونین اطلاعات com4 رو بخونین و روی اون بنویسین ( می تونین به هر com port دیگه تغییرش بدین)
COM4chat.java :
کد:
import javax.comm.*;
import java.util.*;
import java.io.*;
public class COM4chat implements SerialPortEventListener{
static myFrame frame = new myFrame("COM4chat");
static CommPortIdentifier port_id;
static BufferedReader reader;
static OutputStreamWriter writer;
public static void main (String args[]){
frame.setVisible(true);
Enumeration port_list = CommPortIdentifier.getPortIdentifiers();
while (port_list.hasMoreElements()){
port_id = (CommPortIdentifier)port_list.nextElement();
if (port_id.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
if(port_id.getName().equals("COM4")){
break;
}
}
}
try{
SerialPort serialport = (SerialPort) port_id.open("COM4chat",2000);
serialport.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
reader = new BufferedReader(new InputStreamReader(serialport.getInputStream()));
writer = new OutputStreamWriter(serialport.getOutputStream());
serialport.notifyOnDataAvailable(true);
serialport.addEventListener(new SerialPortEventListener(){
public void serialEvent(SerialPortEvent event){
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
readThread t = new readThread();
t.start();
}else{
}
}
}
);
}catch(Exception e){
System.out.println(e);
}
}
public void serialEvent(SerialPortEvent event){
}
}
class readThread extends Thread{
int c;
public void run(){
try{
while((c = COM4chat.reader.read())!=-1){
COM4chat.frame.messages.append(""+(char)c);
}
}catch(Exception e){
System.exit(0);
}
System.exit(0);
}
}
myFrame.java :
کد:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class myFrame extends Frame implements WindowListener,KeyListener {
TextArea messages;
static TextField myMessage;
public myFrame(String title){
super(title);
setSize(300,239);
setResizable(false);
setLayout(new BorderLayout());
messages = new TextArea("",11,39,TextArea.SCROLLBARS_VERTICAL_ONLY);
myMessage = new TextField(38);
messages.setEditable(false);
myMessage.addKeyListener(this);
add(myMessage,BorderLayout.SOUTH);
add(messages,BorderLayout.NORTH);
myMessage.requestFocus();
addWindowListener(this);
}
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if(e.getKeyChar()==' '){
if(myMessage.getText().isEmpty()==false){
try{
COM4chat.writer.write(myMessage.getText()+" ");
COM4chat.writer.flush();
messages.append("Me>>>"+myMessage.getText()+" ");
myMessage.setText("");
}catch(Exception w){
JOptionPane.showMessageDialog(null,"Connection Lost.Aborting...","COM4chat",1);
System.exit(0);
}
}
}
}
public void keyReleased(KeyEvent e) {
}
}