我有三种类型的数据链路: RS485,I2C和蓝牙。每条数据链路都有连接、读写数据等功能。在PC软件上,我必须实现应用程序/协议层才能与设备协同工作。在我之前关于OOP的问题中,我得到了使用Bridge模式或工厂方法的答案,但我认为这可以做得更好。我会问,如果不是更好地使用模板来完成这项任务。下面是我想要如何使用它的简单示例:
// Low level datalink class
class RS485
{
public:
void send(const char *data) {
// datalink function to send data using RS4
我一直在用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电路如下。
请告诉我我错过了什么吗?谢谢。
我有一个USB到RS485转换器连接到我的linux盒:
ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
它目前正在使用中
stty -F /dev/ttyUSB0 raw 57600
因此,当我写一些字符到设备(使用echo或类似的控制台),我可以监视the闪光灯,我可以清楚地识别字符在示波器上。
然而,当我试图从其中读取字符时,会发生一些奇怪的事情:
我将一个简单的电传器连接到RS485输出。
当我在上面输入几个字符时,我可以看到示波器,我注意到在转换器中RX LED的闪烁。
然后我开始从设备上阅读,例如使用c
我正在试着写一个程序,使用一个arduino mega和一个基于FTDI的USB to RS485适配器。
我想让程序变得用户友好,因此我不会让用户手动检查COM端口号,但我想自动检测它。这是一段代码片段
ManagementScope scope = new ManagementScope();
SelectQuery query = new SelectQuery("SELECT * FROM Win32_SerialPort");
ManagementObjectSearcher searcher = new ManagementObjectSea
我需要写一个程序,可以通过RS485监听ModBus网络中的通信。我已使用RS485 <> USB加密狗连接到网络。
我可以使用SerialPort.DataReceived事件读取一些数据,但它给出了奇怪的结果。数据通常是拆分的,而它应该是完整的。(Modbus主机每100ms传输一次)。
class Serial
{
private SerialPort port;
Queue<byte[]> buffer;
public Serial()
{
buffer = new Queue<byte[]>();