用于串行端口连接的Python聊天程序(RS-232)

时间:2012-05-05 21:00:36

标签: python serial-port chat

我发现此代码用于使用串行端口进行通信的简单聊天,我希望看到它有效。我用谷歌搜索了一段时间,发现com0com模拟RS-232连接,因为我没有电缆,但现在我很难过,不知道如何实际工作

代码(在python中):

from serial import * 
from threading import Thread 

class Receiver(Thread): 
    def __init__(self, serialPort): 
        Thread.__init__(self) 
        self.serialPort = serialPort 
    def run(self): 
        text = "" 
        while (text != "exit\n"): 
            text = serialPort.readline() 
            print ("\n machine1: " + text) 
        self.serialPort.close() 

class Sender(Thread): 
    def __init__(self, serialPort): 
        Thread.__init__(self) 
        self.serialPort = serialPort 
    def run(self): 
        text = "" 
        while(text != "exit\n"): 
            text = raw_input("Type your message>>") + "\n" 
            self.serialPort.write(text) 
        self.serialPort.close() 

serialPort = Serial("\\\\.\\CNCA0")

send = Sender(serialPort) 
receive = Receiver(serialPort) 
send.start() 
receive.start()

提前致谢。

2 个答案:

答案 0 :(得分:1)

我也对类似的代码感兴趣。 不幸的是,直到明天,我将无法在两台计算机上对其进行测试。

仅在Tx上工作,在Rx上尚不工作。

import serial
from threading import Thread 

serialPort = serial.Serial(port='/dev/ttyUSB0', baudrate=9600)

class Receiver(Thread):
    def __init__(self, serialPort): 
        Thread.__init__(self)
        self.serialPort = serialPort 

    def run(self):
        text = ""
        while (text != "exit\n"):
            text = serialPort.readline()
            print ("\n machine1: " + text)

class Sender(Thread):
    def __init__(self, serialPort):
        Thread.__init__(self)
        self.serialPort = serialPort 

    def run(self):
        text = ""
        while(text != "exit\n"):
            text = raw_input("$:")
            self.serialPort.write(' ' + text + '\n')

send = Sender(serialPort) 
receive = Receiver(serialPort) 
send.start() 
receive.start()

答案 1 :(得分:0)

首先需要使用com0com创建一个带环回的串口,即端口的输出连接回输入。这样,您从串行端口发送的所有内容都将收到回传。

代码段使用Sender类来读取命令提示符输入。无论你写什么都是通过串口发送的。 Receiver类生成一个线程并等待从串行端口接收的内容。收到整行后,将在命令提示符下键入。

需要注意的事项:

  • 确保您的串口实际上名为CNCA0
  • 按Enter键以显示消息
  • 输入'exit'并按Enter键停止程序