sendsms.m

来自「MATLAB扩展编程by 孙永康.ZIP.有需要的朋友请来下载.」· M 代码 · 共 65 行

M
65
字号
% GB2312 - Unicode 转换表
gut = unitable;

% 输入短消息文字
msg = inputdlg('输入短消息(70个汉字):', 'SMS');
msg = msg{1};
if length(msg) > 70
	fprintf('短消息过长\n');
	return;
end

% 输入对方电话号码
phone = inputdlg('输入对方电话号码(11位数字):', 'SMS');
phone = phone{1};
if length(phone) ~= 11
	fprintf('电话号码长度不对\n');
	return;
end

% 生成半字节倒序格式的电话号码
phone = ['86' phone 'F'];
p = phone;
p(1:2:end-1) = phone(2:2:end);
p(2:2:end)   = phone(1:2:end-1);

% GB2312 - Unicode编码转换
gb  = double(msg);
uni = gb;
for i=1:length(gb)
	if gb(i)>127
		n = find(gb(i) - 32896 == gut(:,1)); %0x8080
		uni(i) = gut(n,2);
	end
end

% 生成短消息文本
sms = sprintf('0011000D91%s0008AA%02X', p, 2*length(uni));
uni = sprintf('%04X', uni);
sms = [sms uni];

% 发送短消息
s=serial('com4','Terminator','CR','Timeout',3);

fopen(s);

try
	cmd = 'AT+CMGF=0';
	fprintf(s, cmd)
catch
end

try
	cmd = sprintf('AT+CMGS=%d', length(sms)/2-1);
	fprintf(s, cmd)
catch
end

try
	cmd = sprintf('%s\x1a', sms);
	fprintf(s, cmd);
catch
end

fclose(s)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?