打开串行端口ANSI C.

时间:2014-05-10 13:48:38

标签: c windows serial-port

我一直在谷歌搜索我的最后几个小时(天),找到一个简单的工作示例,说明如何在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!");

2 个答案:

答案 0 :(得分:3)

C标准不了解串口。您的问题是Windows特定的。也许你想要

         fp = open("COM1:", O_RDWR | O_NOCTTY | O_NDELAY);
         if (fp<0) perror("open COM1:");

我不确定Windows上是否存在openO_NDELAY(看起来像Posix或Linux代码!)

答案 1 :(得分:0)

我认为您编写的代码在Windows中不起作用,除非您使用的是某些我不了解的POSIX库。否则,您必须使用用于串行通信的Windows API函数。

所有文档和一些示例都可以在Microsoft的文档站点MSDN找到。

Windows将串行端口视为文件。用CreateFile()打开它们,用ReadFile()和WriteFile()读/​​写。然后有各种功能用于设置波特率,握手,超时等。

如何详细地执行此操作是一个非常重要的主题,但至少MSDN上的信息应该可以帮助您入门。