ايران ويج

نسخه‌ی کامل: چگونه اطلاعات رو از پورت سریال و پارالل بخوانیم و روی آن ها بنویسیم؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
ابتدا 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 قرار دهید
برای اینکه مطمئن بشین پکیج درست نصب شده از کد زیر استفاده کنین :
کد:
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) {
}
}
مقاله زیر برای افرادی مناسب می باشد که قصد ارتباط با پورت سریال در سی شارپ را دارند .

به منظور ارتباط بين کامپيوتر و سخت افزار (سخت افزار هايي که توسط ميکروکنترلرهايي نظير ARM-PIC-AVR ... ) زبان برنامه نويسي c# کامپوننت بسيار مفيدي بنام serial port پيش بيني نموده است که براحتي طراحان سخت افزار و الکترونيک مي توانند با اين ابزار ارتباط برقرار کرده و اقدام به ارسال و دريافت ديتا با کمترين زحمت در برنامه نويسي داشته باشند.

مقاله زیر به طور کامل به این موضوع پرداخته است :

http://www.4shared.com/file/5F3BpaY6/serialC.html




بسم الله

سلام
ممنون از توضیحاتتون. من مراحلی که گفتین رو رفتم ولی این خطا رو به من میده:
Error loading win32com: java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_45\jre\bin\win32com.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform

میدونید چه فایلی دانلود کنم که به برنامه من که 64بیتی هست بخوره؟