正需要!!!不过我还有一个问题!!!借楼主宝地一用,我是这方面的菜鸟谢谢各位帮帮忙:
我有一个短信收发机,装的移动卡,现在要向装有连同卡定位设备发出定位指令信息,也可以向普通手机发出信息,现在是能向手机发信息:用unicode码解决:
形如:
//将中文转换成Unicode文件进行发送
function TSMSReadSend.AnsiToUnicode(sStr: String): String;
var
i,len: Integer;
cur: Integer;
t: String;
s: WideString;
begin
// WideString('1啊') --> '1啊'
s:= WideString(sStr);
Result:='';
// Length(WideString('1啊')) = 2 !!!
len:=Length(s);
i:=1;
while i<=len do
begin
// Unicode of '啊' --> 21834
cur:=ord(s);
// 21834 --> '554a'
FmtStr(t,'%4.4X',[cur]); // ???? <-- 钱勤
Result:=Result+t;
inc(i);
end;
end;
SmsCenterNum:='3108200705F0'; //短信中心号码
SendSmsNum:=StringSwitch(Mobile);//手机号
Smsint:=length(AnsiToUnicode(trim(str)))div 2;
if Smsint<10 then
begin
SmsUnicode:='0891683108200705F011000D9168'+SendSmsNum+'0008000'+inttostr(Smsint)+AnsiToUnicode(trim(str));
SmsHex:=inttostr(length('11000D9168'+SendSmsNum+'0008000'+inttostr(Smsint)+AnsiToUnicode(trim(str)))div 2);
end
else
begin
SmsUnicode:='0891683108200705F011000D9168'+SendSmsNum+'000800'+IntToHex(Smsint,2)+AnsiToUnicode(trim(str));
SmsHex:=inttostr(length('11000D9168'+SendSmsNum+'000800'+IntToHex(Smsint,2)+AnsiToUnicode(trim(str)))div 2);
end;
if not Comm1.WriteCommData(pchar(trim('AT+CMGS='+SmsHex)+char(13)+char(10)),length(trim('AT+CMGS='+SmsHex))+2) then
begin
end
else
begin
sleep(200);
if not Comm1.WriteCommData(pchar(SmsUnicode+char(26)+char(13)+char(10)),length(SmsUnicode)+2) then
begin
end
else
begin
AddLog('发送短消息成功,短信内容:'+str);
end;
end;
上面是发unicode信息到手机,但是现在这个设备只支持ASCii代码,怎么处理???