2012-02-08 155 views
3

我刚刚完成了一个用C语言编写的小型项目,我从串口读取数据流并解析传入的数据。 该软件对POSIX系统编写的(使用的termios),并且遵照标准步骤,以与串行工作的I/O将POSIX C代码移植到windows中

  1. 使用open()
  2. 配置通信参数(的termios)
  3. 打开串行设备在文件句柄上设置阻止模式(fcntl)
  4. 在串行接口上​​执行read()。
  5. 完成后在串行接口上​​执行close()。

除了插座部分,代码是直的ANSI C.

我的问题是,如何参与会是使在Windows平台上的代码工作。 这个端口不是我写的,我只想告诉其他可能有兴趣移植它的人(即琐碎,不那么微不足道,把你的眼睛从疯狂诱导出来)。

此外,如果有人使用Windows“Windows Services for UNIX”,他们是否能够使用该代码而不修改它?

因此,如果有人有这方面的经验,请你分享。

回答

3

它应该很容易做到。名称非常不同,但调用和概念的顺序非常相似。

你要找的是DCB结构应与SetComState()功能可用于设置波特率,停止位等,然后使用SetCommTimeouts()并在COMMTIMEOUTS结构设置超时值,使后续的读取调用阻塞。

这是一个漂亮的PDF文件short introductionBackup。)

+1

谢谢,DCB结构几乎直接映射到termios结构。由于在* nix系统中一切都是以文件形式表示的,这是很正常的,所以我担心这会在windows中出现问题。但是你也可以在窗口中声明一个文件句柄,并以几乎相同的方式使用它,所以我很高兴。谢谢 – bing 2012-02-08 13:49:51