| 
在线时间36 小时
UID423505
注册时间2013-3-27
NXP金币0 
 该用户从未签到 高级会员 
 
 
	积分651 
最后登录2020-9-4 | 
 
| | | 你好: 下面是我的测试程序,大家帮看看有何问题?
 本串口通过RS485转RS232转换器接到电脑的串口,测试版发送的数据电脑接收不到,测试版能够接收到电脑的发送数据。难道我还得通过程序控制RTS。
 
 void mian_task
 (
 uint32_t initial_data
 )
 {
 MQX_FILE_PTR rs485_dev = NULL;
 char  data_buffer[] = "RS485 send example";
 bool disable_rx = TRUE;
 uint32_t result;
 rs485_dev = fopen( RS485_CHANNEL, (char const *)IO_SERIAL_HW_485_FLOW_CONTROL );
 
 if( rs485_dev == NULL )
 {
 /* device could not be opened */
 _task_block();
 }
 
 /* half duplex, two wire. use only if disable receiver in transmit is desired */
 result = ioctl( rs485_dev, IO_IOCTL_SERIAL_DISABLE_RX, &disable_rx );
 if( result == IO_ERROR_INVALID_IOCTL_CMD )
 {
 /* ioctl not supported, use newer MQX version */
 _task_block();
 }
 
 /* write data */
 write( rs485_dev, data_buffer, strlen(data_buffer) );
 
 /* empty queue - not needed for polled mode */
 fflush( rs485_dev );
 
 /* wait for transfer complete flag */
 result = ioctl( rs485_dev, IO_IOCTL_SERIAL_WAIT_FOR_TC, NULL );
 if( result == IO_ERROR_INVALID_IOCTL_CMD )
 {
 /* ioctl not supported, use newer MQX version */
 _task_block();
 }
 
 /* half duplex, two wire */
 /* if receiver was disabled before, enable receiver again */
 disable_rx = FALSE;
 ioctl( rs485_dev, IO_IOCTL_SERIAL_DISABLE_RX, &disable_rx ) ;
 while(1)
 {
 i=  fread(data_buffer, 1, 10,rs485_dev);
 if(i !=0)
 {
 for(j =0; j<i;j++)
 {
 
 buffer[readlen+j] = data_buffer[j];
 
 }
 readlen += i;
 }
 if(readlen ==10)
 {
 break;
 }
 }
 
 _task_block();
 }
 
 | 
 
 
 
 
 
 |  | 
 | 
 | 
 |