m_send="AT+CMGL=4\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
char ans1[1000];
ReadComm(ans1, 1000); .........m_send="AT\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
char ans2[1000]; // 应答串
ReadComm(ans2, 1000);AfxMessageBox(ans2);其实偶只想得到AT返回的OK结果,现在是多了,AT+CMGL=4后取得的结果.是否这样表述正确,就是怎么把
"m_send="AT+CMGL=4\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
""
这一句的执行后的串口数据清理干净。。
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
char ans1[1000];
ReadComm(ans1, 1000); .........m_send="AT\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
char ans2[1000]; // 应答串
ReadComm(ans2, 1000);AfxMessageBox(ans2);其实偶只想得到AT返回的OK结果,现在是多了,AT+CMGL=4后取得的结果.是否这样表述正确,就是怎么把
"m_send="AT+CMGL=4\r"
WriteFile(hCom,m_send,dwCount,&dwCount,NULL);
""
这一句的执行后的串口数据清理干净。。
解决方案 »
- 我的vc程序一调试就出现user breakpoint called from code at 0x7c921230,几乎所有的工程都这样,重装vc不管用,请大侠们帮帮小女子!!!
- ACE_Reactor:register_handler, remove_handler,ACE是怎么能对句柄集合和掩码保护的
- 如何使用 CStdioFile 以字节为单位,采用二进制方式读取文件的内容?
- 线程的应用,请大侠帮忙!!!十万火急
- 在一个B类中如何根据成员变量Ax(指向B类的指针)来调用A类中的成员函数?
- crystal动态创建错误
- 我如何让一个函数,可以接受不定量的参数,?
- 使用过解霸的朋友请进来帮我解决下这个问题,急!
- 问个关于DeviceIoControl从USB读数据的问题
- to seesi(不是我想骗你,是我不知道怎么才能不骗!),我解决了你一ATL发等编译问题?
- 公司的入职体检到底是什么目的?
- com服务器对象如何检测异常退出的客户端对象
COMMTIMEOUTS timeouts = { // 串口超时控制参数
1000, // 读字符间隔超时时间: 100 ms
1, // 读操作时每字符的时间: 1 ms (n个字符总共为n ms)
500, // 基本的(额外的)读超时时间: 500 ms
100, // 写操作时每字符的时间: 1 ms (n个字符总共为n ms)
500}; // 基本的(额外的)写超时时间: 100 ms hCom = CreateFile(pPort, // 串口名称或设备路径
GENERIC_READ | GENERIC_WRITE, // 读写方式
0, // 共享方式:独占
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件
if(hCom == INVALID_HANDLE_VALUE) // 打开串口失败
{
MessageBox("打开端口失败,请重新选择端口!","第1房产无线应用平台",MB_ICONQUESTION);
m_nConfig=0;
return FALSE;
} GetCommState(hCom, &dcb); // 取DCB dcb.BaudRate=nBaudRate;
dcb.ByteSize=nByteSize;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
dcb.fBinary=TRUE;
dcb.fParity=FALSE; SetCommState(hCom,&dcb); // 设置DCB SetupComm(hCom, 2480, 2480); // 设置输入输出缓冲区大小 SetCommTimeouts(hCom, &timeouts); // 设置超时 Sleep(1000); // 测试GSM-MODEM的存在性
char ans[128];
CString strTemp;
strTemp="AT\r";
dwCount=strTemp.GetLength(); PurgeComm(hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); WriteFile(hCom,strTemp,dwCount,&dwCount,NULL);
Sleep(3000);
ReadComm(ans, 128); if (strstr(ans, "OK") != NULL)
{
MessageBox("成功");
}
else
{
MessageBox("失败");
}
结果是这样的,为什么开电脑一连接始终是失败如果用windows超级终端连接一下串口,再用这段代码连接就成功了?难道需要预热.....
// 用AccessPort之类的软件监视一下串口动作。
占用的情况应该可能性小,如果被占用,用windows超级终端也会连不起阿.如果用超级终端AT一下,或者根本不用AT只要连接成功,再反回来用程序连接就成功了.
dcb.BaudRate=115200;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
dcb.fBinary=TRUE;
dcb.fParity=FALSE;这个跟超级终端一样的参数.超级终端用这个参加连接是成功的.