Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 串口通信_Visual C++_Serial Port_Mscomm32 - Fatal编程技术网

Visual c++ 串口通信

Visual c++ 串口通信,visual-c++,serial-port,mscomm32,Visual C++,Serial Port,Mscomm32,我想将数据十六进制格式(0x01)或(0xff)发送到连接rs232电缆的端口。我正在使用VC++6.0中的MSCOMM控件。这是发送十六进制数据的正确方法。这是我的密码 CString output; UCHAR data1,data2; data1=0x01; output.Format("%x",data1); m_mscom.SetOutput(COleVariant(output)); data2=0xff; output.Format("%x",data2); m_mscom.Set

我想将数据十六进制格式(0x01)或(0xff)发送到连接rs232电缆的端口。我正在使用VC++6.0中的MSCOMM控件。这是发送十六进制数据的正确方法。这是我的密码

CString output;
UCHAR data1,data2;
data1=0x01;
output.Format("%x",data1);
m_mscom.SetOutput(COleVariant(output));
data2=0xff;
output.Format("%x",data2);
m_mscom.SetOutput(COleVariant(output));
如果不正确,请告诉我如何将十六进制格式的数据发送到端口


提前感谢

我不熟悉MSCOM,但它似乎不起作用<代码>格式可以将数据重新格式化为ASCII字符串表示形式

或者,您可以在Windows中将任何串行端口用作“文件”。查看用于打开文件的windows api,您将看到您可以通过使用类似“COM1:”的文件名将某些设备作为文件进行寻址


然后,您可以像文件一样从中读取/写入数据。

如果您的数据只是一个要发送的十六进制值(而不是十六进制格式的字符串),则可能需要“%c”而不是“%x”。如果数据值为(例如)0x65,“%x”将在串行端口上产生两个字节:“6”(ascii值54)和“5”(ascii值53)。“%c”将在串行端口上生成一个字节:“e”(ascii值100或0x65)

至于在C中通过串行端口发送数据,请看一看或:它们可能会为您简化一些事情(请注意,我没有使用它们,我倾向于使用python中的模块或库来实现串行端口应用)


编辑:另一个很好的(我以前用过,但在我写原始文章时找不到链接)是,库的一部分。正如我所说的,现在我倾向于使用WxWiWiDes,但是如果使用微软基础类,CSerialFraso会使串行访问变得非常容易。

什么是WxWigDes?它是有用的?WxWIDGET是一个免费的开源的GUI库(主要是C++)。我发现它的设计比微软基金会类好(它似乎过于基于C API,而不是设计为C++库)。wxWidgets库还有一个额外的优点,即源代码在编译时不会对Windows、Linux和Mac进行任何更改,因此您的应用程序可以免费跨平台运行!