【图谱源码大全讲解】【源码学员】【偏离源码】rs232 源码

时间:2024-11-28 19:37:12 来源:opengl es 2.0 源码 分类:探索

1.串口RS-232发送代码问题

rs232 源码

串口RS-232发送代码问题

       “商业软件”串口发送和接收数据,源码发送的源码只能是字符串型的代码,设备要收十六进制代码

       答案:

       1、源码分析

       发送字符串型,源码实际是源码一个一个字符发送的,设备也是源码图谱源码大全讲解一个一个十六进制代码接受的。

       应此,源码如果设备端要接收“ ”这样5个字节的源码十六进制代码,软件端发送可以这样,源码

       例如发送字符串变量是源码buff:

       char *buff[];

       buff[0]=0x;

       buff[1]=0x;

       buff[2]=0x;

       buff[3]=0x;

       buff[4]=0x;

       不幸的是如果要发送“ 5a”这样8个字节的十六进制代码,由于里面含有十六进制(即0x),源码0x字符表示是源码'\0',在字符串中表示的字符串结束。

       看你运气了,源码源码学员如果程序的源码源代码中发送字符串模块,发送字符长度是源码通过判断字符串长度(strlen)来工作的,那你怎么也发送不出“ 5a”这样8个字节的十六进制代码,从上看出

       buff[5]=0x;buff[6]=0x;buff[7]=0x5a;时,你的软件会认为字符串长度只有5。只会发送出“ ”这样5个字节的偏离源码十六进制代码。如果你的软件发送字符长度是根据你输入或设定的,那能正常发送“ 5a”这样8个字节的十六进制代码。

       例如发送字符串变量是buff:

       char *buff[];

       buff[0]=0x;

       buff[1]=0x;

       buff[2]=0x;

       buff[3]=0x;

       buff[4]=0x;

       buff[5]=0x;

       buff[6]=0x;

       buff[7]=0x5a;

       2、解决办法(不该源代码的情况下)

       做个中间件,需要用到PC的多个串口通道(串口不够用多串口卡扩展),系统接线也要调整,aloam源码如果是1对1(一套软件对一个设备)

       例如:软件是用com1口发送接收,原来是直接com1口接设备,现在改成,com1口接com2口,com2口同时也接设备(注意RS是可以三线通讯的,PC端com1口的电池 源码2脚接com2口的3脚,com2口的3脚接设备的2脚,PC端com1口的3脚接com2口的2脚,com2口的2脚接设备的3脚,PC端com1口的5脚接com2口的5脚,接设备的5脚),这样做的原理是通过com2口来正确发送给设备十六进制代码。并且com1向com2发送的命令需要修改。例如

       要发送“ 5a”这样8个字节的十六进制代码,软件这端

       发送字符串变量是buff:

       char *buff[];

       buff[0]=0x;

       buff[1]=0x;

       buff[2]=0x;

       buff[3]=0x;

       buff[4]=0x;

       buff[5]=0xee;

       buff[6]=0xff;

       buff[7]=0xee;

       buff[8]=0xff;

       buff[9]=0x5a;

       com2口中间件收到“ ee ff ee ff 5a”这样个字节的十六进制代码,他就会进行转换(0xee表示下个字节需要转码,转码方法是减去0xff,那0xff实际就是0x。)这样通过中间件在com2口向设备发送“ 5a”这样8个字节的十六进制代码。

       以上是发送,如果接收呢,同样看商业软件的接受机制,如果商业软件收到0x,实际就是'\0',表示一个字符串接受终止,那么接收数据怎么整都不能正常收到“ 5a”这样8个字节的十六进制代码(含0x),那么只有改写源代码一种方法。

       3、后记

       如果你的所谓商业软件要求别人改源代码不切实际,而且商业软件也不复杂,可以找人重写商业软件了,现在做软件外快的人太多了,拿公司软件稍微改改,时间用不了多少,费用也不高,几千吧