请教手机编程代码

舟中夜起 2003-03-11 10:00:25
想给自己的西门子3618编写一个方便一点的控制程序,各位仁兄有没有现成的代码作为参考,如果通过测试就给分,只要试验成功一个命令字就可以了,多谢!

我刚才用超级终端试验了一下AT控制命令字,是不是手机上这些命令字都是unicode格式的?
...全文
46 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
danielzhu 2003-04-05
  • 打赏
  • 举报
回复
Up,等待中
AthlonxpX86 2003-04-03
  • 打赏
  • 举报
回复
up
bhw98 2003-04-03
  • 打赏
  • 举报
回复
我认为FIFO方式太麻烦,你还要自己不断去识别出一个完整的命令;不如用“超时”控制好,利用两次命令的间隔大于连续字符间隔,一次性读取一个完整的命令。
舟中夜起 2003-04-01
  • 打赏
  • 举报
回复
谢谢大家参与讨论,这几天忙于其它事情,一直没有来这里,抱歉

我那个问题就是由于手机在来电或者来短消息的时候会向串口发送数据,例如西门子3618。也就是程序必须监视是否有消息过来。有两种方法:
1。消息方式
2。线程读取方式,要用overlapped方式,以实现双工

这两个方法都需要构造一个FIFO,并识别出一个完整的命令字。我今天晚上试试调试一个,到时把代码贴出来一起分析

bhw98 2003-03-31
  • 打赏
  • 举报
回复
这里讨论的好热闹啊,串口收发短消息,可参考以下文章,有源码:
http://www.csdn.net/develop/read_article.asp?id=17465
http://www.csdn.net/develop/read_article.asp?id=17574
qiaochang 2003-03-30
  • 打赏
  • 举报
回复
请教大虾:“CTRL+Z”在VC中如何表示,就是PDU数据的结尾字符,谢谢。
fengge8ylf 2003-03-20
  • 打赏
  • 举报
回复
学习
dzq138 2003-03-20
  • 打赏
  • 举报
回复
TO:qiaochang(joe) 不会吧!
“超级终端”,是一个软件,一个微软在操作系统NT时代就有的一个附件。
当然现在的WIN2000中还在。
“开始”->程序->附件->通信
qiaochang 2003-03-20
  • 打赏
  • 举报
回复
请大虾告知:什么是“超级终端”,我在多篇文章中见到过,不知道是什么东西。
dzq138 2003-03-18
  • 打赏
  • 举报
回复
private int ReturnHex(int Value)
{
switch (Value)
{
case 0:
Value=0x7f;
break;
case 1:
Value=0x3f;
break;
case 2:
Value=0x1f;
break;
case 3:
Value=0x0f;
break;
case 4:
Value=0x07;
break;
case 5:
Value=0x03;
break;
case 6:
Value=0x01;
break;
case 7:
Value=0x00;
break;
}
return Value;
}
dzq138 2003-03-17
  • 打赏
  • 举报
回复
找找资料,我忘了在那找的了.挺容易的.我就一天搞定了.附上英文的编码和解码函数.我写的,,可能很糗..
public string EncodeEnglish(string inputstr)
{
//n移动位数;len字符串长度;cur当前字符的值。
int n=0,len=0,cur=0;
//tempstr当前字符,临时;returnstr返回字符串
string tempstr="",returnstr="";
//mid1、mid2分别取当前字符和下一字符
char[] mid1=new char[2];
char[] mid2=new char[2];

len=inputstr.Length ;

for (int i=0;i<len;i++)
{
if (i<len-1)
{
mid1=inputstr.ToCharArray(i,1); //取当前字符
mid2=inputstr.ToCharArray(i+1,1); //取下一个字符
cur=(mid1[0]>>n)|((mid2[0]<<(7-n))& 0xff); //当前字符右移n位 与 下一字符左移n位
}
else
{
mid1=inputstr.ToCharArray(i,1); //如果是最后一个字符,只需取最后一个字符
cur=(mid1[0]>>n)& 0x7f; //右移n位后补0

}
tempstr=Convert.ToString(cur,16);
if (tempstr.Length==1) tempstr="0" + tempstr;
returnstr=returnstr+tempstr;
n=(n+1)%7;
if (n==0) i++;
}
return returnstr;
}

public string DecodeEnglish(string inputstr)
{
string returnstr="";
string s1="",s2="",s="";
int t1=0,t2=0,Point=0;
int t=0,t0=0;
int n=inputstr.Length;
byte[] array = new byte[1];

for (int i=0;i<n;i=i+2)
{
s1=inputstr.Substring(i,2);
t1=Convert.ToInt16(s1,16);
if(Point==0)
t=t1 & ReturnHex(Point);
else
{
s2=inputstr.Substring(i-2,2);
t2=Convert.ToInt16(s2,16);
t=((t1 & ReturnHex(Point))<<Point) | (t2>>(8-Point));
}
array[0]=(byte)t;
s=System.Text.Encoding.Default.GetString(array);
returnstr=returnstr+s;
if(Point%7==0&&Point!=0)
{
i=i-2;
Point=0;
}
else
Point=Point+1;

}
return returnstr;

}
dzq138 2003-03-17
  • 打赏
  • 举报
回复
我已用C#完成了一个,而且告诉大家,好象只有西门子和爱立信的手机才能通过,别的我都没搞定.用C#似乎是方便些...
AthlonxpX86 2003-03-17
  • 打赏
  • 举报
回复
不懂这些,来学习一下,希望楼主能写一些手机编程上的文章叫我们看看
舟中夜起 2003-03-17
  • 打赏
  • 举报
回复
现在串口遇到一个头疼的问题,就是因为例如短消息到来或者来电是,手机会发出AT命令字提示,所以要单开线程查询。
但是接收到的数据往往不是一整个包,而也许是和上一个半拉叠加在一起了,主动发出的AT返回命令字也有这种问题。

不知大家是如何解决的?
csdngoodgood 2003-03-17
  • 打赏
  • 举报
回复
刚路过这里,学习学习,看来很高深那。
顺便问一下,是不是WINDOWCE编程,电脑如何与手机通讯,程序怎样输入到手机中的
请高手指点
Tasehouny 2003-03-16
  • 打赏
  • 举报
回复
我已经写了一个发送和接收短消息的代码。

虽然有些编码是文本的HEX 的UNCODE编码,但是传送的命令字符串是ANSI的。


有空可以交流
dzhcheng 2003-03-16
  • 打赏
  • 举报
回复
学习!!
舟中夜起 2003-03-14
  • 打赏
  • 举报
回复
很奇怪的是,在等待AT命令字返回的时候,有时候返回的只是一个回车符
下一个命令字返回的时候,有时候是上一个命令字的结果
有时候两个命令字的返回结果在一次返回

大家也遇到这种情况吗?谢谢
winphoenix 2003-03-13
  • 打赏
  • 举报
回复
同上
程序的色彩 2003-03-12
  • 打赏
  • 举报
回复
http://www.vchelp.net/vchelp/file2002_2/CEMobile.rar
加载更多回复(5)

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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