有对用单片机控制诺基亚3310收发短信感兴趣的吗?本人做过,积累了些心得。有需要的话找时间整理出来。
加上gps就可以。。。。
有兴趣的先预习一下,这个网站介绍得比较详细。
http://www.embedtronics.com/nokia/fbus.html有疑问的提出来,声明本人只懂些皮毛,但会无保留的尽我所能,呵呵。精通这个的朋友也很多,我想他们也会帮忙的。我从开始到能收发也花了不少时间,也得到了别人的帮助,在此特别感谢bd7bq,顾伟,ben willson.
开始啦!
因为不是太有空,只能每天写点了。
第一步:
先了解3310手机的短信的指令格式。
示例:
byte: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
data: 1e 00 0c d1 00 07 00 01 00 03 00 01 60 00 72 d5
以上示例是从手机获取软硬件版本的指令。
第一位0x1e是指令的起始位,第二位是目标地址位,当是发给手机时总是用0x00. 第三位是源地址,用0x0c.也就是说当发指令给手机时,前三位总是固定的1e 00 0c。
第四位是指令类型,这里d1表示硬件软件版本。
第五第六两个八位组成一个十六位的数,表示信息的长度。
在这里从第7位起到第13位为这条指令里的信息,共7个,根据第五第六位确定。另外,这段信息必须是双数,这里是单数,所以加了一位第14位00。
第15和第16位为校验码(checksum),第15位为前面14位的单数位的xor(从第1位开始,3、5、7....),第16位为双数位的xor(从第2位开始,4、6、8...)。
3310的f bar传输速率为115200,rx和tx为3。3v电平,用5v单片机的华最好加个电阻。建议用pc的串口调试软件先进行调试,记得用232等芯片进行转换。
重要提示:手机在开通通信口前,必须先接收128个u,也就是连续发128个0x55给手机,然后就可以送指令了。
当你先发128个u后,再发前面的示例指令,如果正确的话,手机会马上回复信息回来。这样就说明连接没问题啦,剩下的就是指令的问题了。发回的信息将会是以1e 0c 00开头。
第二步:编码
编码比较麻烦,通常的ascii码一般以8位表示,但在诺基亚的短信里是只取低7位,最高位都是0所以不要。如下例子把hello这个词编码后放到信息里发送。
h e l l o (ascii characters)
68 65 6c 6c 6f (in hexadecimal)
1101000 1100101 1101100 1101100 1101111 (in binary)
编码的时侯先把以上的单词倒过来排列,变成下面的样子:
o l l e h
6f 6c 6c 65 68
1101111 1101100 1101100 1100101 1101000 (the ascii characters shown in binary)
注意了,上面的二进制里都用的七位!
下面开始把七位的变成八位的二进制:先把上面的e(0x65)最低位1往右移放到h(0x68、1101000)变成他的高7位,这样最右边的h就变成了八位(11101000、0xe8),原来七位的e(1100101)就少了最低位1变成了六位,下一步要把她变成8位就必须在它左边的l (1101100)取后两位00放在他的左边高位变成(00110010),依次类推变成了下面的格式:
110 11111101 10011011 00110010 11101000
06 fd 9b 32 e8 (the 8 bit segments decoded into hex)
待续15/10/07