串口发送二进制数据

串口想要利用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[]取指定下标处元素的值,或者给其赋值

时间: 2024-08-09 16:19:55

串口发送二进制数据的相关文章

C# ---串口发送接收数据实例

硬件设备: pH/ORP 电导率/TDS/盐度 溶解氧 2000/3000/5000/5500 变送器/控制器 设定: P-08:RS-485输出设定 P-11:485传输设定 设定这俩种的ID号 根据ID,对串口发送请求:接收串口返回的数据. C# ---串口发送接收数据实例

ajax中获取和发送二进制数据的方法

来源:三联教程 | 时间:2013-06-08 17:51:48 用ajax从服务器端获取二进制时, 需要用overrideMimtType设置request头,让浏览器不要修改读取的的数据,方法如下: var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if (xhr.readyState=== 4 && xhr.status === 200){ var imgdata = xhr.response;

[ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片

flash as3向php发送二进制数据,通过php保存成图片. AS端: 1 package 2 { 3 import com.JPEGEncoder.JPGEncoder; 4 import flash.display.Bitmap; 5 import flash.display.BitmapData; 6 import flash.display.DisplayObject; 7 import flash.display.Loader; 8 import flash.display.Spr

Java模拟POST请求发送二进制数据

在进行程序之间数据通信时我们有时候就需要自定义二进制格式,然后通过HTTP进行二进制数据交互.交互的示例代码如下: public static void main(String[] args) { String result = ""; try { String url = "http://localhost:8080/Demo/SiteApi"; URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection co

[ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据

主类 HTTPSendPHP.as 1 package 2 { 3 import com.JPEGEncoder.JPGEncoder; 4 import com.fylib.httpRequest.HttpRequestBuilder; 5 import com.fylib.httpRequest.HttpRequestBuilderConsts; 6 import flash.display.Bitmap; 7 import flash.display.BitmapData; 8 impor

c# 串口发送接收数据

/********************** 串口数据接收事件 *****************************/ private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { UTF8Encoding uTF8Encoding = new UTF8Encoding(); byte[] readBytes = new byte[this.SerialPort.BytesToRe

Erlang 位串和二进制数据

http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=25876834&id=3300393 因为在本人工作中,服务端Erlang和客户端的flash通信都是发送二进制数据(协议)来通信,Erlang处理起来二进制数据真的很方便,在空余时间查看和翻译了Erlang的二进制相关一些说明文档,当然里面也有根据自己的经验和知识理解的地方. 在二进制解析部分,其实还有很多好的例子.还有就是Erlang的二进制实际应用的例子,下次会再分享的,

WebSocket api与服务器返回的数据类型判断(文件、二进制数据)

一.为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起. 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果.HTTP 协议做不到服务器主动向客户端推送信息. 这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦.我们只能使用"轮询":每隔一段时候,就发出一个

串口发送数据——字符串发送与十六进制发送的区别

转自:http://blog.csdn.net/wityy/article/details/8234739 串口发送数据——字符串发送与十六进制发送的区别 在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据.关于两者的区别,需要从计算机存储数据的格式说起. 在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示.我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照