采用MSCOMM32控件串口通讯,接受缓冲区SetInBufferSize设为1024。
在OnComm事件发生时,接收缓冲区内有字符,那么程序中接受缓冲区rxdata应设为多大?
代码如下: VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[1024];//目前设为1024
int iIndexSt = 0;
int iIndexEnd = 0;
int iCount = 0; memset(rxdata, 0, 1024); if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k<len;k++)
{
BYTE bt=*(rxdata+k); //字符型
m_bArrRevAll.Add(bt);
}
}
在OnComm事件发生时,接收缓冲区内有字符,那么程序中接受缓冲区rxdata应设为多大?
代码如下: VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[1024];//目前设为1024
int iIndexSt = 0;
int iIndexEnd = 0;
int iCount = 0; memset(rxdata, 0, 1024); if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k<len;k++)
{
BYTE bt=*(rxdata+k); //字符型
m_bArrRevAll.Add(bt);
}
}
解决方案 »
- 有两个问题请教
- manifest 它確實可以讓exe文件變成xp風格,但是對dll無效
- 求助 一个关于小小的问题
- VC利用MSXML方法Load()加载XML文件后,占用了内存,如何释放占用的内存??
- 困惑大于收获,郁闷,小散~~~
- 有到华义应聘的么?
- 又要开始找工作了,看看我的简历,大家给我估估价,我在上海~~~ 明晚结帐
- 编程高手&CS高手:CS 服务器命令谁有?
- 向编辑框发送字符的问题
- VC++中如何调用word水印打印类
- 怎样不按Ctrl键,让ListCtrl可以多选.
- ********C++/CLI有前途吗,怎么现在还没有招聘这方面的公司呢,小弟向学这个,想问问学这个好吗,不好就不学了*******
开双缓冲区,一个用于读,一个用于写,最好是异步的,这样环形缓冲区的机制完全能满足你读写数据过大的要求