首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串口通信

串口通信
EN

Stack Overflow用户
提问于 2009-06-05 07:00:56
回答 2查看 2.3K关注 0票数 0

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

代码语言:javascript
复制
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));

如果不正确,请告诉我如何将十六进制格式的数据发送到端口。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2009-06-05 07:18:20

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

至于在C中的串口上发送数据,看看CSerialCSerialPort:它们可能会为你简化一些事情(注意,我没有用过它们,我倾向于用python和pyserial模块做串口应用,或者用wxWidgetsctb库做串口应用)。

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

票数 1
EN

Stack Overflow用户

发布于 2009-06-05 07:08:26

我对MSCOM不熟悉,但它似乎不能工作。相反,Format可以将数据重新格式化为ASCII字符串表示。

或者,你也可以在Windows中使用任何串行端口作为“文件”。查看用于打开文件的windows api,你会发现你可以通过使用像'COM1:‘这样的文件名来将某些设备作为文件进行寻址。

然后,您可以像读/写文件一样对其进行读/写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/954574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档