将 POSIX C 代码移植到 Windows
Posted
技术标签:
【中文标题】将 POSIX C 代码移植到 Windows【英文标题】:Porting POSIX C code to windows 【发布时间】:2012-02-08 13:23:20 【问题描述】:我刚刚完成了一个用 C 编写的小项目,我从串口读取数据流并解析传入的数据。 该软件是为 POSIX 系统编写的(使用 termios),并遵循使用串行 i/o 的标准步骤
-
使用 open() 打开串口设备
配置通信参数 (termios)
在文件句柄 (fcntl) 上设置阻塞模式
在串行接口上执行 read()。
完成后在串行接口上执行 close()。
除了插座部分,代码是直接ANSI C。
我的问题是,让代码在 Windows 平台上运行会涉及多少。 移植不是我写的,我只是想给可能有兴趣移植它的其他人一个指示(即琐碎,不是那么琐碎,把你的眼睛挖出来导致精神错乱)。
另外,如果有人拥有带有“UNIX 的 Windows 服务”的 Windows,他们是否能够在不修改代码的情况下使用该代码?
所以,如果有人有这方面的经验,请您分享一下。
【问题讨论】:
【参考方案1】:这应该很容易做到。名称非常不同,但调用顺序和概念非常相似。
您正在寻找的是DCB 结构,它应该与SetComState() 函数一起使用来设置波特率、停止位等。然后使用SetCommTimeouts() 并在COMMTIMEOUTS 结构中设置超时值以使后续读取调用阻塞。
这是一个漂亮的 PDF 格式的 short introduction。 (Backup.)
【讨论】:
谢谢,DCB 结构几乎直接映射到 termios 结构。由于在 *nix 系统中将所有内容都表示为文件是正常的,我担心这在 Windows 中会出现问题。但是您也可以在 Windows 中声明文件句柄并以几乎相同的方式使用它,所以我很高兴。谢谢以上是关于将 POSIX C 代码移植到 Windows的主要内容,如果未能解决你的问题,请参考以下文章