社区
网络及通讯开发
帖子详情
API BCB6短信收发程序问题
swordwins
2007-03-06 10:10:24
遇到一个很奇怪的问题:当送出命令后只能收到手机回送的前一段字符,例如:发送
at+cgmi后,只收到"at+cgmi",后面就再也收不到东西,高人指点,是什么问题啊?
...全文
476
21
打赏
收藏
API BCB6短信收发程序问题
遇到一个很奇怪的问题:当送出命令后只能收到手机回送的前一段字符,例如:发送 at+cgmi后,只收到"at+cgmi",后面就再也收不到东西,高人指点,是什么问题啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
睿音
2007-08-21
打赏
举报
回复
ClearCommError(hComm,&dwError,&cs);
if (cs.cbInQue != 0)
{
Sleep(FTimeOut);
ClearCommError(hComm,&dwError,&cs);
ReadFile(hComm,RxBuff,cs.cbInQue,&nBytesRead,NULL);
...
}
用GetCommState也可以。
用途是获取cbInQue中的值。也就是串口缓冲区中的内容。
swordwins
2007-03-19
打赏
举报
回复
DeviceHandle=CreateFile(DeviceName.c_str(),
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(DeviceHandle==INVALID_HANDLE_VALUE)
{
Memo2->Lines->Add("打开串口"+DeviceName+"失败,请确认短信设备连接到该端口!");
return;
}
GetCommState(DeviceHandle, &MyDCB);
MyDCB.DCBlength = sizeof(DCB);
MyDCB.BaudRate=ComboBox_BaudRate->Text.ToInt();
MyDCB.ByteSize = 8;
MyDCB.StopBits = ONESTOPBIT ;
MyDCB.Parity = NOPARITY ;
if(!SetCommState(DeviceHandle, &MyDCB))
{
Memo2->Lines->Add("通讯端口"+DeviceName+"设置失败!");
return;
}
GetCommTimeouts(DeviceHandle,&OriginalTimeouts);
OriginalTimeouts.ReadIntervalTimeout=15;
OriginalTimeouts.ReadTotalTimeoutMultiplier=1;
OriginalTimeouts.ReadTotalTimeoutConstant=2500;
OriginalTimeouts.WriteTotalTimeoutMultiplier=1;
OriginalTimeouts.WriteTotalTimeoutConstant=250;
SetCommTimeouts(DeviceHandle,&OriginalTimeouts);
ReceiveQueue=32;
TransmitQueue=9;
SetupComm(DeviceHandle,1024*ReceiveQueue,1024*TransmitQueue);
swordwins
2007-03-19
打赏
举报
回复
是啊。怎么都不行,收不完。寄怪得很
kangji
2007-03-15
打赏
举报
回复
你的问题还没有解决吗?
swordwins
2007-03-14
打赏
举报
回复
怎么没有人响应啊,真是急死个人。
swordwins
2007-03-08
打赏
举报
回复
为什么啊,有什么用啊
kangji
2007-03-08
打赏
举报
回复
if(cs.cbInQue<1) return;
之前加一个GetCommState(DeviceHandle, &cs);
ljianq
2007-03-07
打赏
举报
回复
不是API的问题,而是通讯协议没有搞好
swordwins
2007-03-07
打赏
举报
回复
麻烦看看哪里有问题
swordwins
2007-03-07
打赏
举报
回复
void __fastcall thRcvComChar::Execute()
{
DWORD beginTickCount;
SetName();
memset(RcvBuf, 0x00, sizeof(RcvBuf));
if(lpData==NULL)
{
MyInfoMemo->Lines->Add("共享内存区未建立或异常!");
ReturnValue=0;
Terminate();
}
beginTickCount=GetTickCount();
while((AnsiString(RcvBuf).Pos("OK")!=0)||(AnsiString(RcvBuf).Pos("ERROR")!=0)||Terminated==false)
{
//Sleep(250);
Synchronize(GetData);
if(GetTickCount()-beginTickCount>10*1000L) break;
}
if(AnsiString(RcvBuf).Pos("OK")!=0)
ReturnValue=1;
else if(AnsiString(RcvBuf).Pos("ERROR")!=0)
ReturnValue=-1;
else
{
ReturnValue=-2;
Terminate();
}
memset (lpData, 0x00, 10240);
memcpy (lpData, RcvBuf, 10240);
}
//---------------------------------------------------------------------------
void __fastcall thRcvComChar::GetData()
{
AnsiString tmpstr="";
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cs;
if(DeviceHandle==INVALID_HANDLE_VALUE)
{
MyInfoMemo->Lines->Add("短信设备连接异常!");
ReturnValue=0;
Terminate();
}
if(ClearCommError(DeviceHandle, &dwError, &cs)==false)
{
MyInfoMemo->Lines->Add("ClearCommError() Error") ;
Terminate();
}
tmpstr="";
if(cs.cbInQue<1) return;
if(cs.cbInQue>10240)
{
PurgeComm(DeviceHandle, PURGE_RXCLEAR); //清除通讯端口数据
return;
}
tmpstr.SetLength(cs.cbInQue);
ReadFile(DeviceHandle, (void *)tmpstr.data(), cs.cbInQue, &nBytesRead, NULL);
if(nBytesRead>0)
{
strcat(RcvBuf, tmpstr.Trim().c_str());
MyInfoMemo->Lines->Add(RcvBuf);
}
}
swordwins
2007-03-07
打赏
举报
回复
我是一直在读啊,只读出这些后面就没反映了。
futulove
2007-03-07
打赏
举报
回复
有没有可能一次只能读出部分,要多读几次加起来才正确的。
swordwins
2007-03-07
打赏
举报
回复
通讯协议应该怎么做呢?
swordwins
2007-03-06
打赏
举报
回复
没作处理啊,要处理吗?我是用线程来接收的
kangji
2007-03-06
打赏
举报
回复
后面有回车换行符号,你是怎么接收 的?
swordwins
2007-03-06
打赏
举报
回复
什么意思哦,AT+cgmi后面还有东西才对,应该有手机的生产厂家信息出来才对啊,光是AT+cgmi肯定不对啊
FFSB
2007-03-06
打赏
举报
回复
AT+cgmi看收到的结果是
AT+cgmi or AT+CGMI.
再做分析
我不懂电脑
2007-03-06
打赏
举报
回复
类似于tcp/ip是流式协议,需要不断的读,组合成命令。
swordwins
2007-03-06
打赏
举报
回复
我用的是API,OpenFile()、WriteFile()、ReadFile()
FFSB
2007-03-06
打赏
举报
回复
BCB6有收发短信的API?
是用的第三方控件?
协议开发 中移动CMPP2.0协议
API
(四)
本文详细介绍了CMPP协议中的链路检测机制及其实现方式,并提供了
短信
API
开发的具体步骤与接口定义,帮助开发者快速掌握
短信
接口的使用。
Android Recovery升级原理
本文详细解析了Android系统的启动模式,重点讲解了Recovery模式的作用、进入方法,以及OTA升级的原理,涉及Bootloader、BCB与Recovery与MainSystem的交互。涵盖分区结构、升级流程和关键步骤。
文本分类实战:用Python和逻辑回归构建轻量高可用垃圾
短信
过滤器
本文基于真实电商售后工单项目,详解如何用Python和逻辑回归构建高可用垃圾
短信
过滤器。重点涵盖:面向业务的文本预处理(停用词动态裁剪、词形还原避坑)、TF-IDF特征工程(维度优化与IDF鲁棒性增强)、逻辑回归模型调优(类权重与正则强度业务导向调整)、错误分析驱动迭代,以及生产级部署监控(数据漂移检测、反馈闭环系统)。强调精度、速度与可解释性的工程平衡。
MultiByteToWideChar的用法
本文介绍如何使用
API
函数MultiByteToWideChar将AnsiString转换为WideString,适用于中文字符转换场景,如手机
短信
AT指令集中的TPDU格式。文章详细说明了函数各参数的意义及使用方法。
自动客服功能的微信小
程序
本文介绍了一款基于微信小
程序
的客服机器人开发过程。该机器人利用olami平台进行自然语言处理,能够解答用户关于特定游戏的
问题
,并可通过简单配置扩展到其他客服场景。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章