gpt4 book ai didi

C++ 串口通讯

转载 作者:太空狗 更新时间:2023-10-29 22:52:47 24 4
gpt4 key购买 nike

我正在运行 Ubuntu 9.10,我似乎在使用 termios 时遇到了问题。所以我可以启动 minicom,以 57600 波特、8N1 的速度打开串口,没有硬件或软件流控制,而且效果很好。我输入 @17 5,我的设备有响应。当我尝试在我的 C++ 代码中设置串行端口时,我没有得到响应。我知道软件正在与端口通信,因为 LED 灯亮了。

这是我的主要内容:

int main(void)
{
int fd; /* File descriptor for the port */

fd = open("/dev/keyspan1", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
/*
* Could not open the port.
*/

perror("open_port: Unable to open /dev/ttyS0 - ");
}
else
fcntl(fd, F_SETFL, 0);

/*****************************CHANGE PORT OPTIONS***************************/
struct termios options;

/*
* Get the current options for the port...
*/

tcgetattr(fd, &options);

/*
* Set the baud rates to 57600...
*/

cfsetispeed(&options, B57600);
cfsetospeed(&options, B57600);

/*
* Enable the receiver and set local mode...
*/

options.c_cflag |= (CLOCAL | CREAD);

/*
* Set the new options for the port...
*/


tcsetattr(fd, TCSANOW, &options);
/***********************************END PORT OPTIONS***********************/

int n;
n = write(fd, "@17 5 \r", 7);
if (n < 0)
fputs("write() of 8 bytes failed!\n", stderr);

char buff[20];

sleep(1);

n = read(fd, buff, 10);

printf("Returned = %d\n", n);

close(fd);

return(0);
}

如有任何建议,我们将不胜感激。谢谢。

最佳答案

您可能需要将终端初始化为原始模式。我建议您使用 cfmakeraw() 来初始化术语选项结构。其中,cfmakeraw 将确保流量控制被禁用,奇偶校验被禁用,并且输入是逐个字符可用的。

cfmakeraw 是非 Posix 语言。如果您关心可移植性,请查看 cfmakeraw 联机帮助页以了解它所做的设置。

关于C++ 串口通讯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3644379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com