如题所示,我通过串口发送
unsigned char Read_address[12]={0x680x990x990x990x990x990x990x680x130x000x790x16};//485 结果接受到的变成了68 19 19 19 19 19 19 68 13 80 79 16,0x99变成了0x19,0x00变成80.发送波特率是2400,1,8,偶校验。因为读取仪器内数值,仪器数值在2400,1,8,偶校验的情况下能读出。仪器本身的波特率,校验不能改变。修改过波特率到9600,接受结果无变化,求指点,网上实在没有答案。发送代码如下
unsigned char Read_address[12]={0x680x990x990x990x990x990x990x680x130x000x790x16};//485
if(Uart4_RxCompleted == 1) { for(i=0;i<sizeof(Read_address);i++) { RS485_TX; USART_SendData(UART4 Read_address[i]); while(USART_GetFlagStatus(UART4USART_FLAG_TC)!=SET); RS485_RX; } flag = 1; Uart4_RxCompleted = 0; Uart4_RxCounter = 0; }
if(Uart4_RxCompleted == 1) { for(i=0;i<sizeof(Read_address);i++) { RS485_TX; USART_SendData(UART4 Read_address[i]); while(USART_GetFlagStatus(UART4USART_FLAG_TC)!=SET); RS485_RX; } flag = 1; Uart4_RxCompleted = 0; Uart4_RxCounter = 0; }
正好相差 0x80 就是符号位出错。
检查 unsigned,signed 的问题