【问题标题】:C++ Source code organization - COM port initializationC++源码组织——COM口初始化
【发布时间】:2011-10-07 15:16:27
【问题描述】:

我有一个程序将与多个 COM 端口进行通信。到目前为止,我将所有代码都放在一个文件中,而且有点混乱。我如何以一种方式组织它,将所有串行连接和连接参数设置在其他地方,让我只读取或写入主文件中的端口。

这是我的意思的配置示例

HANDLE hSerial = CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);


DCB dcbSerialParams = {0};
dcbSerialParams.DCBlength=sizeof(dcbSerialParams);

dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;

【问题讨论】:

  • 如何将您发布的所有代码放入一个接受字符串并返回句柄的函数中?或者创建一个代表 com 端口的类..

标签: c++ c coding-style


【解决方案1】:

HANDLE hSerial = CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,.......

每个 com 端口唯一唯一的就是名称“com3”,所以这就是您需要提供给函数的全部内容。 Createfile 返回的句柄完全识别打开的端口,这是您唯一需要读/写端口并在完成后关闭它。

所以了解函数并传入端口的名称并返回句柄

【讨论】:

    【解决方案2】:

    在另一个模块中定义一个“T_COMport”类。添加足够的构造函数参数来设置端口,以及读/写方法、_DCB 结构、所有那些讨厌的、烦人的串行端口设置调用以及使端口按需要工作所需的任何线程或其他东西。可能是 rx 数据或其他事件的一两个事件。像往常一样将模板放在头文件中,像往常一样将其包含在您的主应用程序中。

    只需为每个端口创建一个实例并开始读取/写入内容。

    Rgds, 马丁

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多