博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
W3100SM-S 短信猫代码发送 上
阅读量:4697 次
发布时间:2019-06-09

本文共 2605 字,大约阅读时间需要 8 分钟。

,打开包装盒,这是网口的,带根网线,GSM天线,有张光盘,光盘里有这么个软件,如下图:

默认IP地址是:192.168.1.24,端口:1234。但这不是我想要的,我要用程序调用接口,或是DLL,或是协议发送。打电话给客服务。

客服MM告诉我:哥,咱们这款不支持接口的。

我:哦。

找技术,技术可以的,把协议发给我,等了好久邮箱里都没有收到,什么情况,然后在垃圾邮件中找到了。

短信发送格式输入:    01113910013712你好abc。意义:    0:数据类型为发送短信11:对方号码长度为11位。13910013712:对方号码。你好abc:要发送的短信内容。短信接收格式输出:    01386135210003291404013113162432你好abc。意义:    0:数据类型为收到短信,后面为短信相关内容。13:发送方号码长度为13位。        8613521000329:发送方号码。        14:时间戳长度。        04013113162432:时间戳,表示发送时间为04年01月31日13点16分24秒,时区是32。        你好abc:收到的短信内容。接收格式例子(十六进制):30 00 31 00 33 00 38 00 36 00 31 00 35 00 39 00 31 00 31 00 30 00 37 00 30 00 33 00 38 00 32 00 31 00 34 00 31 00 33 00 30 00 31 00 32 00 34 00 31 00 31 00 32 00 38 00 33 00 34 00 33 00 32 00 31 00 32 00 33 00 61 00 62 00 63 00 60 4F 7D 59 接收报文:123abc你好(unicode编码格式为两个字节表示,如果为汉字,本身就是两个字节表示,如果是数字及字幕,则在转化为十六进制后用00补全两个字节)

告诉我要用十六进制发送,我问没有DEMO,我是个懒人呀,有DEMO可以省事不少。回答我没有,那好吧!我用发,选择上十六进制,然后发送,很可惜,不成功,返回个4,手机也没有收到段信,当然这不是我的手机号,在这里我只是用了协议里的。

然后再问技术,技术说发送的时候也要如下这般(unicode编码格式为两个字节表示,如果为汉字,本身就是两个字节表示,如果是数字及字幕,则在转化为十六进制后用00补全两个字节),好吧,我服了,我做了一个很艰难的决定,自己搞定吧,不提供DEMO,自己动手丰衣足食。

///         /// 短信unicode编码格式转换        ///         ///         /// 
private string StringToUnicodeMode(string srcText) { string dst = ""; char[] src = srcText.ToCharArray(); for (int i = 0; i < src.Length; i++) { byte[] bytes = Encoding.Unicode.GetBytes(src[i].ToString()); string str = bytes[0].ToString("X2") +" "+ bytes[1].ToString("X2"); dst += str+" "; } return dst.TrimEnd(' '); } /// /// 收取到的编码转短信 /// /// ///
private string UnicodeToStringMode(string srcText) { string dst = ""; string src = srcText.Replace(" ",""); int len = src.Length / 4; for (int i = 0; i <= len-1; i++) { string str = ""; str = src.Substring(0, 4); src = src.Substring(4); byte[] bytes = new byte[2]; bytes[0] = byte.Parse(int.Parse(str.Substring(0, 2), NumberStyles.HexNumber).ToString()); bytes[1] = byte.Parse(int.Parse(str.Substring(2, 2), NumberStyles.HexNumber).ToString()); dst += Encoding.Unicode.GetString(bytes); } return dst; }

这两种转换代码只适合在此使用,在别的地方用是不对的,正常的是不够两个字节在前面,这个是在后面补全的,所以在反过来转换的时候也要把顺序反过来。

这是按照协议的格式编码的,可以复制到剪切板,然后粘贴到TCP调试助手里,然后选中十六进制发送,一定要改成自己的手机码,要不你是收不到的,小心人家告你骚扰!

转载于:https://www.cnblogs.com/wk986/archive/2013/03/17/2965252.html

你可能感兴趣的文章
String类的深入学习与理解
查看>>
不把DB放进容器的理由
查看>>
OnePage收集
查看>>
Java parseInt()方法
查看>>
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>
[NYIST15]括号匹配(二)(区间dp)
查看>>
json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
查看>>
洛谷 P1101 单词方阵
查看>>
Swift DispatchQueue
查看>>
C#和JAVA 访问修饰符
查看>>
小甲鱼OD学习第1讲
查看>>
HDU-1085 Holding Bin-Laden Captive-母函数
查看>>
php提示undefined index的几种解决方法
查看>>
LRJ
查看>>
Struts2环境搭建
查看>>
Linux: Check version info
查看>>
stl学习之测试stlen,cout等的运行速度
查看>>
魔戒三曲,黑暗散去;人皇加冕,光明归来
查看>>
Error和Exception
查看>>