串口发送二进制数据

串口想要利用Mscomm控件发送任何数据 不管是什么类型的都得转换成VARIANT型的变量,顺便提醒一下 想要串口发送和接收(好像尤指接收)二进制数据 要把那个InputMode 设置为 1 ( Binary ), 0 代表的是 Text。



再有一个vc不管只是vc,而是所有针对于Windows的开发环境而言,只要他是在WIN API的基础上的都有BYTE这个类型,这个类型顾名思义就是一个字节,比如你想发送的127 = 0xFF,你可以BYTE byVal = 0xFF;

还有你如果用的是 MFC那么 有一个类在串口编程里面绝对的用到就是CByteArray,他是直接操作字节数组的类

你要利用Mscomm控件发送127。则可以这样
C/C++ code:

1 CMSComm m_mscomm;
 2 //....
 3  
 4 CByteArray bytes;
 5 bytes.Add( 0xFF );
 6  
 7 COleVariant ovSend( bytes );
 8  
 9 m_mscomm.SetOutput( ovSend );
10 //.....
# CByteArray

CByteArray是MFC中BYTE一种集合类,用于申明CByteArray类的数据,并且用相关函数对其进行处理。该类是8位无符号整数 BYTE类型,范围0—255,头文件是Afxcoll.h。类CByteArray支持以字节为单位动态建立数组。

CByteArray类的数据成员编辑

类CByteArray支持以字节为单位动态建立数组。类CByteArray的成员函数与类CObArray的成员函数类似。因此,也可以参考类CObArray的文档。只需把函数参数或返回值中出现的CObject指针换成BYTE就可以了。例如,类CObArray中的函数:CObject CObArray::GetAt( int ) const;在类CByteArray中对应的就是BYTE CByteArray::GetAt( int ) const;CByteArray中包含了宏IMPLEMENT_SERIAL,以支持对象的串行化和转储。如果字节数组被存到了档案中,不管使用覆盖的操作符“<<”或成员函数Serialize,则其中的元素被串行化。注意:在使用数组之前,要调用SetSize设置它的大小并分配内存。如果没有使用SetSize,在数组中增加元素会引起数组内存空间频繁的重新分配以及数据拷贝。内存频繁的重新分配和数据拷贝会影响性能并造成内存碎片。如果需要对数组中每个元素的输出调试信息,就要把CDumpContext对象的深度设置为1或更大。

CByteArray类的函数成员编辑

构造函数

CByteArray构造一个空的字节数组

边界

GetSize取数组中元素的个数(数组大小)GetUpperBound返回数组的最大有效下标SetSize设置数组元素的个数(数组大小)

操作

FreeExtra释放数组中当前已有数据的最大上界后所有未占用的内存RemoveAll删除数组中所有的元素

元素存取

GetAt返回指定下标处的数组元素的值SetAt给数组中指定下标的元素赋值,但不能动态增长数组(指定的下标不能越界)ElementAt返回对数组中某个字节的临时参考GetData允许访问数组中的元素。可以为NULL

数组增长

SetAtGrow给数组中指定下标的元素赋值,在下标越界时动态增长数组Add在数组末尾增添一个元素,必要时增长数组Append在数组末尾接上另一个数组,必要时增长数组Copy把另一个数组的内容拷贝到本数组,必要时增长数组

插入/删除

InsertAt在指定的下标处插入元素(或另外一个数组的内容)RemoveAt删除指定下标处的一个元素操作符operator[]取指定下标处元素的值,或者给其赋值原文链接: https://www.cnblogs.com/wang-xiang/p/4920955.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/223793

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午12:11
下一篇 2023年2月13日 下午12:13

相关推荐