社区
硬件/系统
帖子详情
modem问题:如何向modem发送AT command,并接收其返回值
huaboy2004
2005-11-19 09:29:16
如题!
另外如果能实现向其发送数据包,并接收校验更好。
网上有个PassMark ModemTest,功能好像就是这样的,但是就是不知道实现原理。
哪位大侠对modem有所研究的话,望不吝赐教,谢谢。
PS:哪位感兴趣的,可以先看看PassMark的小软件
http://www.passmark.com/download/index.htm
...全文
340
10
打赏
收藏
modem问题:如何向modem发送AT command,并接收其返回值
如题! 另外如果能实现向其发送数据包,并接收校验更好。 网上有个PassMark ModemTest,功能好像就是这样的,但是就是不知道实现原理。 哪位大侠对modem有所研究的话,望不吝赐教,谢谢。 PS:哪位感兴趣的,可以先看看PassMark的小软件 http://www.passmark.com/download/index.htm
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huaboy2004
2006-03-11
打赏
举报
回复
能不能把BreaKing和38062708的分调过来,斑竹帮帮忙了,谢谢。
huaboy2004
2006-03-11
打赏
举报
回复
靠,给分也给错了
怎么能改回来
huaboy2004
2006-03-11
打赏
举报
回复
郁闷,结贴!
38062708
2005-12-06
打赏
举报
回复
向 MODEM 发送数据包?
不懂你的意思,我推测是向 MODEM 连接的另一端 PC 发送数据包。
通常应该先拨号,ATD 电话号码,记得加“;”
然后就可以传输数据了,返回命令状态发命令“+++”
挂断用ATH
BreaKing
2005-12-03
打赏
举报
回复
你的那个串口类做得也太简单了...
你能保证writefile或者readfile的时候不会出错吗?
向modem发数据的方式估计要到modem厂商网站上查询资料了
huaboy2004
2005-11-29
打赏
举报
回复
我上面所说的都是基于一台PC加上一个modem,不是要两个modem之间的数据传送
huaboy2004
2005-11-29
打赏
举报
回复
现在就差另外一个问题了,如何向modem发送一个数据包,并且校验接收是否正确。
不知道需要对modem做什么设置,才能让其有这样的功能,大家提供一下思路啊,谢谢了!
huaboy2004
2005-11-29
打赏
举报
回复
发送AT command的问题解决了,大概就是沿用下面的思路,大家可以参考一下。
下面是打开、写入、读出串口数据的函数实现
#include "StdAfx.h"
#include ".\commanager.h"
#using <mscorlib.dll>
//#include "Windows.h"
//#include "Winbase.h"
//API Requirements
//Header: Declared in Winbase.h; include Windows.h.
//Library: Use Kernel32.lib.
comManager::comManager(void)
{
}
comManager::~comManager(void)
{
}
// 串口设置
void comManager::SetCommPort()
{
DCB dcb;
DWORD dwError;
BOOL fSuccess;
hCom=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,// non-overlapped
NULL
);
if(hCom == INVALID_HANDLE_VALUE)
{
//To get extended error information, call GetLastError
dwError = GetLastError();
MessageBox(NULL,"ERROR","OK",MB_OK);
return;
}
// 获取串口当前配置
fSuccess = GetCommState(hCom,&dcb);
if(!fSuccess)
{
MessageBox(NULL,"Get configuration port has problem","OK",MB_OK);
return;
}
// 设置串口参数
dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = 19200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
fSuccess = SetCommState(hCom,&dcb);
if(!fSuccess)
{
MessageBox(NULL,"Failed to open ComProt","OK",MB_OK);
return;
}
else
{
MessageBox(NULL,"ComPort Opened","OK",MB_OK);
}
// COMMTIMEOUTS对象,以毫秒为单位
COMMTIMEOUTS comTimeOut;
// 接收时,两字符间最大的时延
comTimeOut.ReadIntervalTimeout = MAXDWORD;//3;
// 读取每字节的超时.
comTimeOut.ReadTotalTimeoutMultiplier = 10;//3;
// 读串口数据的固定超时
// 总超时 = ReadTotalTimeoutMultiplier * 字节数 + ReadTotalTimeoutConstant
comTimeOut.ReadTotalTimeoutConstant = 10;//2;
// 写每字节的超时.
comTimeOut.WriteTotalTimeoutMultiplier = 20;//3;
// 写串口数据的固定超时
comTimeOut.WriteTotalTimeoutConstant = 50;//2;
// 将超时参数写入设备控制.
SetCommTimeouts(hCom,&comTimeOut);
// 设置输入/出缓冲
SetupComm(hCom,1024,512);
// 清空输入/出缓冲
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
}
// 读取串口
void comManager::ReadPort(char strReceive[], int length)
{
BOOL rf;
unsigned long nNum;
// 读取length字节到strReceive[]缓冲区
rf = ReadFile(hCom, strReceive, length, &nNum, ULL);
if(!rf)
{
MessageBox(NULL,"read failed","OK",MB_OK);
}
}
// 写入串口
void comManager::WritePort(char strSend)
{
BOOL wf;
unsigned long nNum;
// 写入一个字节
wf = WriteFile(hCom, &strSend, 1, &nNum, NULL);
if(!wf)
{
MessageBox(NULL,"write failed","OK",MB_OK);
}
}
// 关闭串口
BOOL comManager::Close()
{
if(hCom != INVALID_HANDLE_VALUE)
{
return CloseHandle(hCom);
}
return true;
}
////////////////////////////////////
这里是发送AT指令的源码,发送"AT"应该返回"OK"
// 发送AT指令
private: System::Void btnCmd_Click(System::Object * sender, System::EventArgs * e)
{
char strSend[] = {'A', 'T', '\r'};// '\r'
char strReceive[1024];
int length;
for(int i=0; i<3; i++)
{
this->m_comManager->WritePort(strSend[i]);// 写入串口
}
length = S"OK"->Length;
this->m_comManager->ReadPort(strReceive, length);// 读取串口
for(int j=0; j<length; j++)
{
textBoxReceive->Text = String::Concat(textBoxReceive->Text, strReceive[j].ToString());
}
}
Pipi0714
2005-11-23
打赏
举报
回复
只要有个控制串口的类即可。AT指令只要上网或者正规厂家的Modem在说明书中都有
yayaniuniu502
2005-11-20
打赏
举报
回复
帮顶一个,难!
Modem
AT
Command
Set
A complete summary and explanation of the AT
command
set for Hayes compatible dial-up
modem
s is given on this page. Defaults are shown in boldface.
Command
FunctionATAttention - this precedes all comma
AT_
Command
学习
AT
Command
AT
Command
是Hayes开发的, 一般用在手机设备上, 用来给一些
modem
来
发送
指令来实现特别的功能.AT
Command
所有的指令都是以AT开头使用方法: 数据线连接上手机后,打开Windows附件里的的超级终端,选好通讯口,拨特率115200,流
CIU32L051实战:AT
Command
V2异步通信框架移植与优化
本文详细介绍了在CIU32L051单片机上移植和优化AT
Command
V2异步通信框架的实践过程。内容涵盖框架概述、源码集成、硬件驱动适配、URC消息处理、内存安全策略及多任务互斥处理,重点分享了针对资源受限环境的优化技巧与调试方法,助力开发者高效实现AT命令通信。
MODEM
AT
COMMAND
指令集
-------------------------------------------------------------------
Modem
RS-232C 说明 : 接脚 名称 功能 方向 ---------------------------------------------------- 1 AG
MT6853 AP如何調用AT指令給
Modem
AP在framework開了一個
command
介面讓module下AT
command
, 使用範例如下: import com.mediatek.telephony.MtkTelephonyManagerEx; String atCmd = "AT+EGCMD=XXXX"; byte[] rawData = atCmd.getBytes();
硬件/系统
2,644
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章