请教TMSComm控件问题:用output发出去AT指令后input收到发出去的AT指令

atoz 2002-06-26 10:55:02
代码如下,无论我输入任何AT指令,Memo中显示的只是我发出去的内容。
而且只有波特率是 19200 的时候有显示返回,其他都没有。
我的终端是我的 siemens 3568i 手机。

//---------------------------------------------------------------------------
void __fastcall TFormMain::ToolButton1Click(TObject *Sender)
{
if (ToolButton1->Down)
{
try
{
// 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1->Settings = "19200,n,8,1";
MSComm1->Handshaking = 0; // 无握手
MSComm1->InBufferCount = 0; // 清空接收缓冲区
MSComm1->InputLen = 0; // Input读取整个缓冲区内容
MSComm1->RThreshold = 1; // 每次接收到字符即产生OnComm事件

MSComm1->PortOpen = true; // 打开串口
MSComm1->DTREnable = true; // 数据终端准备好
MSComm1->RTSEnable = true; // 请求发送
}
catch (...)
{
ToolButton1->Down = false;
return;
}
}
else
{
MSComm1->PortOpen = false;
MSComm1->DTREnable = false;
MSComm1->RTSEnable = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::MSComm1Comm(TObject *Sender)
{
OleVariant TxBuffer;
if (MSComm1->CommEvent == comEvReceive)
{
TxBuffer = MSComm1->Input;
Memo1->Text = Memo1->Text + WideString(TxBuffer);
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::Button1Click(TObject *Sender)
{
OleVariant TxBuffer;
if (Trim(Edit1->Text) != "")
{
TxBuffer = Edit1->Text;
MSComm1->Output = TxBuffer;
}
}
//---------------------------------------------------------------------------
...全文
55 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
atoz 2002-08-16
  • 打赏
  • 举报
回复
结帖,其实 victorchen_2000 说得很接近。应该加上 \r 我自己搞定了。
victorchen_2000 2002-06-27
  • 打赏
  • 举报
回复
加个回车符号。
MSComm1->Output = "AT\n";
要用其他的拨特率,请先在手机 上设置拨特率,可能手机也会自动调整,那就要先多送几个"at\n"
atoz 2002-06-27
  • 打赏
  • 举报
回复
我加了回车号不管用,还是一样。
我在超级终端里面可以用 19200波特率,8位数据位,无奇偶校验,1停止位,无数据流制连接,可以正常发送 AT指令,并且有回馈。
我的手机可能设置不了波特率。
另外一个问题:
AT+CMGL=4 返回的那些短消息内容是什么的编码格式,有没有相关的文档介绍一下?

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧