我有一个USB到RS485转换器连接到我的linux盒:
ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
它目前正在使用中
stty -F /dev/ttyUSB0 raw 57600
因此,当我写一些字符到设备(使用echo或类似的控制台),我可以监视the闪光灯,我可以清楚地识别字符在示波器上。
然而,当我试图从其中读取字符时,会发生一些奇怪的事情:
我将一个简单的电传器连接到RS485输出。
当我在上面输入几个字符时,我可以看到示波器,我注意到在转换器中RX LED的闪烁。
然后我开始从设备上阅读,例如使用c
我有三种类型的数据链路: RS485,I2C和蓝牙。每条数据链路都有连接、读写数据等功能。在PC软件上,我必须实现应用程序/协议层才能与设备协同工作。在我之前关于OOP的问题中,我得到了使用Bridge模式或工厂方法的答案,但我认为这可以做得更好。我会问,如果不是更好地使用模板来完成这项任务。下面是我想要如何使用它的简单示例:
// Low level datalink class
class RS485
{
public:
void send(const char *data) {
// datalink function to send data using RS4
我正在arm开发板上实现RS485,使用串口和gpio进行数据使能。
我在发送前将数据启用设置为高,并希望在传输完成后将其设置为低。
只需编写以下代码即可完成:
//fd = open("/dev/ttyO2", ...);
DataEnable.Set(true);
write(fd, data, datalen);
tcdrain(fd); //Wait until all data is sent
DataEnable.Set(false);
我想将阻塞模式更改为非阻塞模式,并将轮询与fd结合使用。但是我没有看到任何对应于‘传输完成’的投票事件。
当所有数据都已发送时,如
我一直在用Windows测试RaspberryPi3,以便通过IoT与现有的FreeScale硬件进行通信。我一直在使用作为参考。在我的UWP成功地插入了UART端口之后,我似乎无法接收硬件传输的RS485数据。
我的硬件RS485 UART配置为4800波特率,8位数据格式,非parit和停止等待模式禁用。我成功地在UWP示例中插入了4800-8-none-one,但是硬件传输的数据并没有在Read Data text block上触发和显示。从我的硬件传输的数据是十六进制的,这是F5-01-55-4B。
在传输过程中出现错误。
RS485电路如下。
请告诉我我错过了什么吗?谢谢。