void CSCommTestDlg::OnOnCommMscomm1()
{
char ch;
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
//Sleep(1500);
for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
}
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k);
ch=(char)bt;
strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
m_strEditRXData+=strtemp;
}
if(ch==0x0A)
{m=m+1;
//if(ch==0x0A&&m==2)
//{q=2;}
switch(m)
{case 1:
m_ctrlComm.SetOutput( COleVariant("\x06\xB2\xB4\xB2\x8D\x0A") );
Sleep(400);
m_ctrlComm.SetSettings("4800,n,8,1");
//Sleep(500);
break;
case 2:
m_ctrlComm.SetOutput( COleVariant("\x08\x04\x00\x00\x00\x01\x3A\xF2\x7E ") );[em13]
//m_ctrlComm.SetSettings("4800,n,8,1");
break;
default:;
}}
}
调用同一个函数发送数据,前一帧06 B2 B4 B2 8D 0A就可以发送,但是后一帧(红色部分)为什么就只能发送08 04呢?
请各位高手不吝赐教