我一直在谷歌搜索我的最后几个小时(天),找到一个简单的工作示例,说明如何在Windows上打开ANSI C中的串行端口。我尝试打开一个txt文件并通过char将其发送到串口char。 (如果你能给我一个提示,如何通过char发送char,延迟1秒钟,我会很高兴!)这是我的代码,但不知何故它不起作用:(
FILE *file;
file = fopen("text.txt", "r");
if (file)
{
while ((c = getc(file)) != EOF)
{
FILE *fp;
fp = open("COM1", O_RDWR | O_NOCTTY | O_NDELAY);
if (fp == -1) puts("Couldn't open port!");
else puts("Port opened!");
fprintf(fp,c);
}
fclose(file);
}
else puts("Couldn't find text.txt!");
答案 0 :(得分:3)
C标准不了解串口。您的问题是Windows特定的。也许你想要
fp = open("COM1:", O_RDWR | O_NOCTTY | O_NDELAY);
if (fp<0) perror("open COM1:");
我不确定Windows上是否存在open
,O_NDELAY
(看起来像Posix或Linux代码!)
答案 1 :(得分:0)
我认为您编写的代码在Windows中不起作用,除非您使用的是某些我不了解的POSIX库。否则,您必须使用用于串行通信的Windows API函数。
所有文档和一些示例都可以在Microsoft的文档站点MSDN找到。
Windows将串行端口视为文件。用CreateFile()打开它们,用ReadFile()和WriteFile()读/写。然后有各种功能用于设置波特率,握手,超时等。
如何详细地执行此操作是一个非常重要的主题,但至少MSDN上的信息应该可以帮助您入门。