0

我发现这段代码用于使用串行端口进行通信的简单聊天,我想看看它是否有效。我用谷歌搜索了一段时间,发现 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()

提前致谢。

4

2 回答 2

1

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

代码片段使用 Sender 类来读取命令提示符输入。你写的任何东西都是通过串口发送的。Receiver 类产生一个线程并等待从串行端口接收到一些东西。收到整行后,将在命令提示符下键入。

注意事项:

  • 确保您的串口实际命名为 CNCA0
  • 按 Enter 显示一条消息
  • 键入“exit”并 Enter 以停止程序
于 2012-05-05T21:09:39.113 回答
1

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

仅在 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()
于 2020-01-10T21:05:55.897 回答