我想将数据十六进制格式(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));如果不正确,请告诉我如何将十六进制格式的数据发送到端口。
提前感谢
发布于 2009-06-05 07:18:20
如果您的数据只是您想要发送的十六进制值(而不是十六进制格式的字符串),那么您可能需要"%c“而不是"%x”。给定数据值(例如) 0x65,"%x“将在串行端口上产生两个字节:'6‘(ascii值54)和'5’(ascii值53)。"%c“将在串行端口上产生一个字节:'e‘(ascii值100或0x65)。
至于在C中的串口上发送数据,看看CSerial或CSerialPort:它们可能会为你简化一些事情(注意,我没有用过它们,我倾向于用python和pyserial模块做串口应用,或者用wxWidgets和ctb库做串口应用)。
编辑:另一个非常好的(我以前用过它,但在写原始文章时找不到链接)是CSerialFile,它是WFC库的一部分。正如我所说的,我现在倾向于使用wxWidgets,但是如果你正在使用微软的基础类,CSerialFile确实使得串行访问变得非常容易。
发布于 2009-06-05 07:08:26
我对MSCOM不熟悉,但它似乎不能工作。相反,Format可以将数据重新格式化为ASCII字符串表示。
或者,你也可以在Windows中使用任何串行端口作为“文件”。查看用于打开文件的windows api,你会发现你可以通过使用像'COM1:‘这样的文件名来将某些设备作为文件进行寻址。
然后,您可以像读/写文件一样对其进行读/写。
https://stackoverflow.com/questions/954574
复制相似问题