• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#实现短信猫通信(无开发包)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

因为项目的需要,简简单单的做了个DEMO,能够打电话和发送短信,不是很完善,都可以举一反三!

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace testPhoneInfo_Csharp
{
    
public partial class frmMain : Form
    {       
        
public frmMain()
        {
            InitializeComponent();
            Form.CheckForIllegalCrossThreadCalls 
= false;
        }        

        
private void frmMain_Load(object sender, EventArgs e)
        {
            sp.Open();
        }        

        
private void btnPhone_Click(object sender, EventArgs e)
        {           
            sp.WriteLine(
"ATD"+txtPhoneNum.Text .Trim ()+";"+"\r\n");
        }

        
private void btnSendMsg_Click(object sender, EventArgs e)
        {
            sp.WriteLine(
"AT+CMGF=0"+"\r\n");//将短消息格式设置为PDU模式
            System.Threading.Thread.Sleep(300);
            sp.WriteLine(
"AT+CSCA=" + "+8613010314500" + "\r\n");
            System.Threading.Thread.Sleep(
300);
            sp.WriteLine(
"AT+CMGS=0" + this.getLenght(txtMsg.Text.Trim()) + "\r\n");
            System.Threading.Thread.Sleep(
500);            
            sp.WriteLine(
"0011000D91" + this.reverserNumber(txtPhoneNum.Text.Trim()) + "000801" + this.contentEncoding(txtMsg.Text.Trim()) + Convert.ToChar(26).ToString());
        }
        
//获取短信内容的字节数
        private string getLenght(string txt)
        {
            
int i = 0;
            
string s = "";
            i 
= txt.Length * 2;
            i 
+= 15;
            s 
= i.ToString();
            
return s;
        }
        
//将手机号码转换为内存编码
        private string reverserNumber(string phone)
        {
            
string str = "";
            
//检查手机号码是否按照标准格式写,如果不是则补上
            if (phone.Substring(02!= "86")
            {
                phone 
= string.Format("86{0}", phone);
            }
            
char[] c = this.getChar(phone);
            
for (int i = 0; i <= c.Length - 2; i += 2)
            {
                str 
+= c[i + 1].ToString() + c[i].ToString();
            }
            
return str;
        }
        
//汉字解码为16进制
        private string contentEncoding(string content)
        {
            Encoding encodingUTF 
= System.Text.Encoding.BigEndianUnicode;
            
string s = "";
            
byte[] encodeByte = encodingUTF.GetBytes(content);
            
for (int i = 0; i <= encodeByte.Length - 1;i++ )
            {
                s 
+= BitConverter.ToString(encodeByte, i, 1);
            }
            s
=string.Format ("{0:X2}{1}",s.Length /2,s);
            
return s;
        }

        
private char[] getChar(string phone)
        {
            
if (phone.Length % 2 == 0)
            {
                
return Convert.ToString(phone).ToCharArray();
            }
            
else
            {
                
return Convert.ToString(phone + "F").ToCharArray();
            }
        }

        
private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            txtReturnData.Text 
+= sp.ReadExisting()+"\r\n";
        }        
    }
}


其实都很简单,大家一看都会了!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用C#制作记事本发布时间:2022-07-13
下一篇:
(原创)无废话C#设计模式之十三:Decorator发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap