W3100SM-S 短信猫代码发送 上

万维盈创W3100SM-S短信猫使用说明书,打开包装盒,这是网口的,带根网线,GSM天线,有张光盘,光盘里有这么个软件,如下图:

W3100SM-S

默认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可以省事不少。回答我没有,那好吧!我用TCP调试助手发,选择上十六进制,然后发送,很可惜,不成功,返回个4,手机也没有收到段信,当然这不是我的手机号,在这里我只是用了协议里的。

W3100SM-S2

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

/// <summary>
        /// 短信unicode编码格式转换
        /// </summary>
        /// <param name="srcText"></param>
        /// <returns></returns>
        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(' ');
        }

        /// <summary>
        /// 收取到的编码转短信
        /// </summary>
        /// <param name="srcText"></param>
        /// <returns></returns>
        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;
        }

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

W3100SM-S4

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

代码下载

posted @ 2013-03-17 23:56  wk986  阅读(732)  评论(0编辑  收藏  举报