我在为我的 rs485 传输设置一个好的参数时遇到了问题。我已经在第四天工作了,我不知道为什么它不起作用。
我正在编写一个程序,它将通过 rs485 与其他设备进行通信。我有一台装有 i.MX6 和 Linux Linaro 的小型机。当我尝试发送在我的 minicomp 上运行我的程序的特殊帧时,它发送但是,我的设备不负责。此外,当我从我的 PC 发送具有相同正确帧的回声时,就像我的程序设备响应一样。所以问题是正确配置我的 UART 端口 /dev/ttyUSB。
我需要波特率 115200 和 8 位帧和 1 个停止位。
void SetUARTPort()
{
int errnum;
ctrl485.flags |= SER_RS485_ENABLED;
ctrl485.flags |= SER_RS485_RX_DURING_TX;
ctrl485.delay_rts_before_send = 0;
ctrl485.delay_rts_after_send = 0;
status = ioctl(fd, TIOCSRS485, &ctrl485);
if (status <0 )
{
printf("%s: Unable to configure port in 485 mode, status (%i)\n", dev, status);
errnum = errno;
fprintf(stderr, "Value of errno: %d\n", errno);
fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
}
option.c_cflag = B115200 | CS8 | CSTOPB | CLOCAL ;
option.c_iflag = 0;
option.c_oflag = 0;
option.c_lflag = 0;
option.c_iflag = IGNPAR | IGNBRK;
speed = B115200 ;
tcgetattr(fd, &option);
cfsetospeed(&option, speed); //TX baude rate
cfsetispeed(&option, speed); // RX baude rate
tcsetattr(fd, TCSANOW, &option); //set new serial config}
最后一件事是 ioctl 问题。当我启动程序时,我遇到了一个错误,例如:
/dev/ttyUSB0: Unable to configure port in 485 mode, status (-1)
Value of errno:25. Inappropriate ioctl for device
我想我尝试了很多东西,但我仍然不知道为什么它不起作用。任何人都可以帮助我吗?
瓦尼。