21xrx.com
2024-09-20 00:44:01 Friday
登录
文章检索 我的文章 写文章
C++6.0编写上位机窗口,多行显示串口数据
2023-06-27 19:24:55 深夜i     --     --
C++ 上位机窗口 多行显示 串口数据 编写

C++编程语言一直是程序员界非常喜爱的语言之一。其原因在于,C++编程语言易于学习和使用,同时拥有强大的功能和能力。在这篇文章里,我们将讨论如何使用C++6.0编写上位机窗口,多行显示串口数据。

上位机窗口是一种用于显示和处理传感器数据的软件程序。它被广泛用于工业控制、医疗设备、自动化等领域。在这个应用程序中,我们需要读取串口数据并将其显示在多行文本框中,以便进行实时分析和处理。

首先,我们需要在C++6.0编程环境中创建一个新的窗口应用程序。在这个应用程序中,我们需要使用WinAPI,也就是Windows应用程序编程接口,来创建窗口、文本框和按钮等控件。以下是创建窗口的代码。


HWND hwnd = CreateWindowEx(

  0,

  L"Class Name",    // Windows类名

  L"Window Title",   // 窗口标题

  WS_OVERLAPPEDWINDOW, // 窗口样式

  CW_USEDEFAULT,   // x坐标

  CW_USEDEFAULT,   // y坐标

  CW_USEDEFAULT,   // 窗口宽度

  CW_USEDEFAULT,   // 窗口高度

  NULL,        // 父窗口句柄

  NULL,        // 菜单句柄

  NULL,        // 应用程序实例句柄

  NULL        // 额外数据

);

接着,我们需要在窗口中添加一个多行文本框,以便显示串口数据。以下是创建多行文本框的代码。


HWND hTextBox = CreateWindowEx(

  0,

  L"EDIT",

  NULL,

  WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL,

  0,

  0,

  600,

  400,

  hwnd,

  NULL,

  NULL,

  NULL

);

最后,我们需要编写一个函数来读取串口数据并将其添加到多行文本框中。以下是读取串口数据的代码示例。


// 打开串口

HANDLE hComm = CreateFile(

  L"COM1",       // 串口名称

  GENERIC_READ,    // 数据访问权限

  0,          // 共享模式

  NULL,        // 安全描述符

  OPEN_EXISTING,    // 打开方式

  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // 文件属性

  NULL         // 模板句柄

);

// 初始化串口参数

DCB dcb;

ZeroMemory(&dcb, sizeof(dcb));

dcb.DCBlength = sizeof(dcb);

GetCommState(hComm, &dcb);

dcb.BaudRate = 9600;

dcb.ByteSize = 8;

dcb.Parity  = NOPARITY;

dcb.StopBits = ONESTOPBIT;

SetCommState(hComm, &dcb);

// 设置串口超时时间

COMMTIMEOUTS timeouts;

ZeroMemory(&timeouts, sizeof(timeouts));

timeouts.ReadIntervalTimeout     = MAXDWORD;

timeouts.ReadTotalTimeoutMultiplier = 0;

timeouts.ReadTotalTimeoutConstant  = 0;

timeouts.WriteTotalTimeoutMultiplier = 0;

timeouts.WriteTotalTimeoutConstant  = 0;

SetCommTimeouts(hComm, &timeouts);

// 读取串口数据并显示

char buffer[1024];

DWORD dwRead = 0;

while (true) {

  ReadFile(hComm, buffer, sizeof(buffer), &dwRead, NULL);

  if (dwRead > 0) {

    buffer[dwRead] = 0;

    SendMessage(hTextBox, EM_REPLACESEL, 0, (LPARAM)buffer);

  }

  Sleep(1); // 稍微缓一下,避免CPU过载

}

以上是一个完整的C++6.0应用程序,它可以打开串口、读取串口数据并将其显示在多行文本框中。当然,我们还可以添加其他功能,比如保存数据、绘制图表等等。总之,C++6.0是一个非常强大的编程语言,它可以帮助我们编写出各种各样的应用程序,为我们的工作和生活带来更多的便利和效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复