NOKIA的都要安装数据套件;SEMENS和MOTOLA的不需要。
解决方案 »
- button上面的字符自动折行问题
- 求字段最后5个记录平均值后,并将平均值加到第二字段最后一个记录里里
- 求局部直方图平衡算法
- 财务凭证录入控件
- 程序出现Access violation at address 00428C12 ......
- 各位大侠呀,,快没分了,我是个阿菜,,,各位帮帮阿
- DELPHI6的ADOQuery控件,关于filter(过滤)的问题?急急急???一定给分??
- 急!关于QUERY,用SQL进行插入记录,敬请各位赐教,我在线等着你的良方!
- 如何实现那种浏览目录的树状图,可以选择目录?快……急救!!!!
- excel的老问题?
- 哪位高手能发给我一个在delphi中调用.chm的程序实例,谢谢!
- 请问微软的visual foxpro6简体中文版专业版哪里有的下载,要求下载速度快稳定的站点
AT+CNMI=2,2,3,2,1
AT+CSDH=1
AT+CMGF=1
AT+CPMS="SM"
AT+CSCS="PCCP437"
AT+CSMP=,,,0
AT+CMGS="+86手机号码"
输入信息回车以下只有发送字符而不能发送汉字
其实你把手机连在com口,和把modem连在上面一样
你只要把手机当成一个modem,用终端或者编程发送AT命令就行了
手机厂家网址上应该有AT命令列表的
我的是西门子的3568i,就在www.my-siemens.com找到了一个
这个AT指令里有GSM手机通用的命令,也有特定厂家专门为手机定义的命令
你去找一下就行了。和手机通信关键是设定通讯的参数,
比如速率和一些信号设置,比如STR之类的,
如果设置不正确,会不能通信,或者会有别的问题,
在我的手机上,好像如果设置DTR就会引起手机黑屏,不过好像没什么影响。
1。请问怎样将手机与串口相连?
2。我的是3518i,命令是否跟3568i一样,能否发一份AT命令列表给我?
具体不记得了,要重新找回那篇文章,不过它没有象上面所提到的方法那样,具有
点局限性!
http://cn.geocities.com/znhaicn/works-s35expl.html
这里有一篇文章:
http://tech.sina.com.cn/s/2001-11-23/2167.html
请问哪里搞得到线?(我在上海)
http://www.fmsvc.com/
我没试过听说不错
http:\\go.163.com\smsinterfaceEmail:[email protected]
13662480201
{ 函数 : RESULTSTRING = HexToBin(HEXSTRING)
{ 目的 : 把十六进制字符串转换为二进制字符串
{
{===============================================================}
{ 函数 : RESULTINTEGER = HexCharToInt(HEXCHAR)
{ 目的 : 转换一个十六进制字符为整数
{===============================================================}
{ 函数 : RESULTSTRING = HexCharToBin(HEXCHAR)
{ 目的 : 转换一个十六进制字符为二进制字符串
{===============================================================}
{ 函数 : RESULTINTEGER = Pow(BASE,POWER)
{ 目的 : 指数函数
{===============================================================}
{ 函数 : RESULTINTEGER = BinStrToInt(BINSTRING)
{ 目的 : 把二进制字符串转换为整数
{===============================================================}
{ 函数 : RESULTSTRING = DecodeSMS7Bit (PDUSTRING)
{ 目的 : 解码一个7-bit SMS (GSM 03.38) 为ASCII码
{===============================================================}
{ 函数 : RESULTSTRING = ReverseStr (SOURCESTRING)
{ 目的 : 反转一个字符串
{===============================================================}
{===============================================================}
{ 函数 : RESULTSTRING = UniCode2Gb (SOURCESTRING)
{ 目的 : 将UniCode字符串转换为GB
{===============================================================}
{===============================================================}
{ 函数 : RESULTSTRING = GB2UniCode (SOURCESTRING)
{ 目的 : 将GB字符串转换为UniCode
{===============================================================}unit BinHexTools;
interface function HexToBin(HexNr : String): String;
function HexCharToInt(HexToken : char): Integer;
function HexCharToBin(HexToken : char): String;
function pow(base, power: integer): integer;
function BinStrToInt(BinStr : String) : Integer;
function DecodeSMS7Bit(PDU : String): String;
function ReverseStr(SourceStr : String) : String;
function GB2UniCode(GB:string): String;
function UniCode2GB(S : String): String;implementation uses sysutils, dialogs;
function HexCharToInt(HexToken : char):Integer;
begin
//if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32);
{ 将小写字母转换成大写 } Result:=0; if (HexToken>#47) and (HexToken<#58) then { chars 0....9 }
Result:=Ord(HexToken)-48
else if (HexToken>#64) and (HexToken<#71) then { chars A....F }
Result:=Ord(HexToken)-65 + 10;
end;
function HexCharToBin(HexToken : char): string;
var DivLeft : integer;
begin
DivLeft:=HexCharToInt(HexToken); { first HexChar->Int }
Result:='';
{ Use reverse dividing }
repeat { Trick; divide by 2 }
if Odd(DivLeft) then { result = odd ? then bit = 1 }
Result:='1'+Result { result = even ? then bit = 0 }
else
Result:='0'+Result; DivLeft:=DivLeft div 2; { keep dividing till 0 left and length = 4 }
until (DivLeft=0) and (length(Result)=4); { 1 token = nibble = 4 bits }
end;
function HexToBin(HexNr : string): string;
{ only stringsize is limit of binnr }
var Counter : integer;
begin
Result:=''; for Counter:=1 to length(HexNr) do
Result:=Result+HexCharToBin(HexNr[Counter]);
end;
function pow(base, power: integer): integer; //指数base^power
var counter : integer;
begin
Result:=1; for counter:=1 to power do
Result:=Result*base;
end;
function BinStrToInt(BinStr : string) : integer;
var counter : integer;
begin
if length(BinStr)>16 then
raise ERangeError.Create(#13+BinStr+#13+
'不是一个有效的16Bit二进制单元'+#13); Result:=0; for counter:=1 to length(BinStr) do
if BinStr[Counter]='1' then
Result:=Result+pow(2,length(BinStr)-counter);
end;
function DecodeSMS7Bit(PDU : string):string;
var OctetStr : string;
OctetBin : string;
Charbin : string;
PrevOctet: string;
Counter : integer;
Counter2 : integer;
begin
PrevOctet:='';
Result:=''; for Counter:=1 to length(PDU) do
begin
if length(PrevOctet)>=7 then { if 7 Bit overflow on previous }
begin
if BinStrToInt(PrevOctet)<>0 then
Result:=Result+Chr(BinStrToInt(PrevOctet))
else Result:=Result+' '; PrevOctet:='';
end; if Odd(Counter) then { only take two nibbles at a time }
begin
OctetStr:=Copy(PDU,Counter,2);
OctetBin:=HexToBin(OctetStr); Charbin:='';
for Counter2:=1 to length(PrevOctet) do
Charbin:=Charbin+PrevOctet[Counter2]; for Counter2:=1 to 7-length(PrevOctet) do
Charbin:=OctetBin[8-Counter2+1]+Charbin; if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin))
else Result:=Result+' '; PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1);
end;
end;
end;
function ReverseStr(SourceStr : string) : string;
var Counter : integer;
begin
Result:=''; for Counter:=1 to length(SourceStr) do
Result:=SourceStr[Counter]+Result;
end;
function GB2UniCode(GB:string):string;
var
s: string;
i, j, k: integer;
a: array [1..160] of char;
begin
s:='';
StringToWideChar(GB, @(a[1]), 500);
i:=1;
while ((a[i]<>#0) or (a[i+1]<>#0)) do begin
j:=Integer(a[i]);
k:=Integer(a[i+1]);
s:=s+Copy(Format('%X ',[k*$100+j+$10000]) ,2,4);
//S := S + Char(k)+Char(j);
i:=i+2;
end;
Result:=s;
end;
function UniCode2GB(S : String):String;
Var I: Integer;
begin
I := Length(S);
while I >=4 do begin
try
Result :=WideChar(StrToInt('$'+S[I-3]+S[I-2]+S[I-1]+S[I]))+ Result;
except end;
I := I - 4;
end;
end;
end.
GSM_v0705,
SMS PDU-mode是编程所需要的技术文件,在网上找找吧