在stm32项目开发中或多或少用到GSM功能,这个时候,编写小程序获取短信内容与长度是十分必要的。
程序:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
/************************************************************************
* 语言:C#
* 功能:GTM900C模块短信内容与长度获取
* 时间:2013年10月30日上午
* 作者:wit_yuan
* 使用目的:stm32开发项目
************************************************************************/
namespace GTM900C短信翻译工具代码
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
String MessageContext = textBox1.Text;
String center = "0891683110101605F0";
String phone = "68";//5155530108F7";
phone = phone + reversePhoneNumber(textBox4.Text.Trim()) ;
// textBox4.Text = reversePhoneNumber(textBox4.Text.Trim());
reversePhoneNumber("");
String content = "";
byte[] buffer = Encoding.Unicode.GetBytes(MessageContext);
for(int i = 0 ; i < buffer.Length ; i = i + 2)
{
string buffer1 = buffer[i + 1].ToString("X");
string buffer2 = buffer[i].ToString("X");
if (buffer1.Length == 1)
{
buffer1 = "0" + buffer1;
}
if (buffer2.Length == 1)
{
buffer2 = "0" + buffer2;
}
content += buffer1 + buffer2;
}
String more = "";
more = (content.Length /2).ToString("X");
if (more.Length == 1)
{
more = "0" + more;
}
String phone1 = "11000D91";
String result = center + phone1 + phone + "000800" + more + content;
String leng = phone1 + phone + "000800" + more + content;//
textBox2.Text = "AT+CMGS=" + Convert.ToString(leng.Length /2); //数据长度
textBox3.Height = 100;
textBox3.Text = result;
}
private string reversePhoneNumber(String phone)
{
char[] getNumber = new char[12];
getNumber = (phone + "F").ToCharArray();
char temp;
for (int i = 0; i < getNumber.Length - 1; i = i + 2)
{
temp = getNumber[i];
getNumber[i] = getNumber[i + 1];
getNumber[i + 1] = temp;
}
return new string(getNumber);
}
private void button2_Click(object sender, EventArgs e)
{
string chinese = textBox5.Text;
byte[] buffer = Encoding.Unicode.GetBytes(chinese);
string content = "";
for (int i = 0; i < buffer.Length; i = i + 2)
{
string buffer1 = buffer[i + 1].ToString("X");
string buffer2 = buffer[i].ToString("X");
if (buffer1.Length == 1)
{
buffer1 = "0" + buffer1;
}
if (buffer2.Length == 1)
{
buffer2 = "0" + buffer2;
}
content += buffer1 + buffer2;
}
textBox6.Text = content;
}
}
}