VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
LONG length;
BYTE rxdata[2000];
CString strtemp;
if(m_CtrlCom.GetCommEvent() == 2)
{
variant_inp = m_CtrlCom.GetInput();//每次这步执行完就退出了。
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for(k = 0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt = *(char*)(rxdata+k);
if(m_ctrlDisplay.GetCheck())
strtemp.Format("%+2x ",bt);
else
strtemp.Format("%c",bt);
length = strtemp.GetLength();
m_RXDATA += strtemp;
m_RXBYTE += length;
}
}
而程序在我的其它通讯实验中没有问题。偏偏跟手机红外线连接时,能发。
但接收时有问题。如下:
at+cmgl(列表短信) 都没有问题。
但直接发送at<-却回收到不"ok",这时我单步执行时,到上面指出的那行代码就自动退出了。
VARIANT variant_inp;
COleSafeArray safearray_inp;这两个变量,我自己也不太清楚是怎么回事,是不是它们惹的祸?我曾找了一个其它人写的串口调试工具,却能收到“ok”,
COleSafeArray safearray_inp;
LONG len,k;
LONG length;
BYTE rxdata[2000];
CString strtemp;
if(m_CtrlCom.GetCommEvent() == 2)
{
variant_inp = m_CtrlCom.GetInput();//每次这步执行完就退出了。
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for(k = 0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt = *(char*)(rxdata+k);
if(m_ctrlDisplay.GetCheck())
strtemp.Format("%+2x ",bt);
else
strtemp.Format("%c",bt);
length = strtemp.GetLength();
m_RXDATA += strtemp;
m_RXBYTE += length;
}
}
而程序在我的其它通讯实验中没有问题。偏偏跟手机红外线连接时,能发。
但接收时有问题。如下:
at+cmgl(列表短信) 都没有问题。
但直接发送at<-却回收到不"ok",这时我单步执行时,到上面指出的那行代码就自动退出了。
VARIANT variant_inp;
COleSafeArray safearray_inp;这两个变量,我自己也不太清楚是怎么回事,是不是它们惹的祸?我曾找了一个其它人写的串口调试工具,却能收到“ok”,
解决方案 »
- 有木马总是进入我的进程,如何破
- 再问,怎么将属性页和static关联起来
- CTabCtrl的问题:获取TAB 的ITEM的LPARAM时导致CRASH,郁闷了很久没有答案,高分求解!
- 用Create动态创建CStatic控件字体不正常
- 有CserialPortEx类的朋友请把源代码发给我,谢谢;
- SOS! 畫甘特圖, 能縮放和移動, 能打印, 能導出至Excel中.
- 如何根据COleDateTime计算最近三天的时间范围?
- 在VC怎么把JPG或BMP图片文件隔行保存成另一个图片?
- 小小问题!!!!
- 感叹:学VC实在是太难了!
- 请教:如何将_RecordsetPtr把返回的数据库返回数据拷贝到特定的数据块中
- 在vc中如何做程序的启动界面?
VARIANT vResponse;
char *str;
char *str1;
int k, nEvent, i;
nEvent = m_Com.GetCommEvent(); switch(nEvent)
{
case 2: //收到大于RTHresshold个字符
k = m_Com.GetInBufferCount(); //接收到的字符数目
if(k > 0)
{
vResponse=m_Com.GetInput(); //read
//对数据进行其他处理
str = (char*)(unsigned char*) vResponse.parray->pvData;
//MessageBox("数据已接受!");
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_strReceive = (const char *)str;
//清除字符串中的不必要字符
break;
case 3: //CTS线状态发生了变化
break;
case 4: //DSR线状态发生了变化
break;
case 5: //CD线状态发生了变化
break;
case 6: //Ring Indicator发生变化
break;
} UpdateData(FALSE);
m_CtrlCom.GetInput();这步还是有问题。好像就不能收。到这就退出了
我也加上SetRTSEnable(TRUE),还是不行。
自己写的类??
按f11跟入input(),看看到底出在哪一行啊?老兄!!!!!
楼上兄弟,那个当然是MSComm了
退出了看看是什么提示啊.GetLastError()啊...
光在这里瞎猜有什么用啊...
得看提示..