在线时间36 小时
UID423505
注册时间2013-3-27
NXP金币0
该用户从未签到
高级会员

- 积分
- 651
- 最后登录
- 2020-9-4
|
本帖最后由 FSL_TICS_ZP 于 2014-11-27 14:04 编辑
你好:
下面是我的测试程序,大家帮看看有何问题?
本串口通过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();
}
|
|