C语言开发经验实例。项目上用到一个485modbus接口的温湿度传感器,设备A,经测试没问题,但是后来又加了一个其他485设备,设备B,就有问题了,新加的设备会返回五六十个字节的数,1,单独读取设备A,B,都没问题,2,一但读取设备B后,再读取设备A,就没有任何回复了。3,后来又做了一些测试心里就有数了,建议设备A厂家,我说你们的产品有bug,告诉他们以下几点。
2,modbus地址比对时,设备地址数据所在位置在串口接收数据数组的后面。3,串口接收数据数组的长度大概是20个字节。4,你们应该在串口中断里,做判断,假如接收数据的数组写满了,就丢弃数据,不能溢出。设备A厂家的客服一开始不服气,说他们的设备用量很大,都没问题。结果在我坚持下,她把我发的内容转给技术后,反馈我说的都说对了。
1、求指点一个关于串口传递数组的程序错误
程序中T11;这里的T1是什么东西,也不可以是TI,建议删掉。至于乱码,估计问题出在数组b的类型上,你用的是int,但传输的时候送给SBUF的是字节,建议将数组b的类型改为unsignedchar,如果你是用串口调试助手接受的就行。呵呵,楼主没搞清楚ASCII码的概念。把数组定义成:unsignedcharb[8]{1,
3,4,5,6,7,8};或者unsignedcharb[8]{0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};就可以了。在计算机上能显示的是ASCII码,比如1的ASCII码数值是0x31。而ASCII值1是一个不可见字符,也就是你所见的乱码。另一种解决方法,设置你的串口助手按16进制显示,乱码就能看到了。
2、stm32串口发送数组为什么串口发送不出去我打印的四个数字
USART_SendData(USART1,password[3]);这个有问题啊,应该是password数组里的所有USART_SendData(USART1,password[0]);USART_SendData(USART1,password[1]);USART_SendData(USART1,password[2]);USART_SendData(USART1,
3、如何打印数组
用for循环嘛,比如这段代码就是打印一个二维数组的例子,一维数组更简单望采纳,谢谢#include//一个for循环打印二维数组voidprintArr(intarr[][3],intlen){for(inti0;i<len;i )//此处的len,可以用row*column来替换。