⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 vs2005串口编程示例,好多例子,是学习串口编程方面不错的资料
💻 CS
字号:
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;

using System.Runtime.InteropServices;
using System.Data.OleDb;

namespace Ex13_17
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //机器号码,当参数为空时,函数自动获取设备信息
            txtJQHM.Text = GMS.GSMModemGetSnInfoNew(txtCOM.Text, txtBTL.Text);
            txtCOM.Text = GMS.GSMModemGetDevice();  //COM1
            txtBTL.Text = GMS.GSMModemGetBaudrate();  //波特率
        }
        private void btnSend_Click(object sender, EventArgs e)
        {
            if (txtSJHM.Text == "")
            {
                MessageBox.Show("手机号码不能为空!", "提示", MessageBoxButtons.OK);
                txtSJHM.Focus();
                return;
            }
            if (txtContent.Text == "")
            {
                MessageBox.Show("短信内容不能为空!", "提示", MessageBoxButtons.OK);
                txtContent.Focus();
                return;
            }
            //连接设备
            if (GMS.GSMModemInitNew(txtCOM.Text, txtBTL.Text, null, null, false, txtPower.Text) == false)
            {
                MessageBox.Show("设备连接失败!" + GMS.GSMModemGetErrorMsg(), "提示", MessageBoxButtons.OK);
                return;
            }
            // 发送短信
            if (GMS.GSMModemSMSsend(null, 8, txtContent.Text, Encoding.Default.GetByteCount(txtContent.Text), txtSJHM.Text, false) == true)
                MessageBox.Show("短信发送成功!", "提示", MessageBoxButtons.OK);
            else
                MessageBox.Show("短信发送失败!" + GMS.GSMModemGetErrorMsg(), "提示", MessageBoxButtons.OK);
        }

        private void btnResvice_Click(object sender, EventArgs e)
        {
            //连接设备
            if (GMS.GSMModemInitNew(txtCOM.Text, txtBTL.Text, null, null, false, txtPower.Text) == false)
            {
                MessageBox.Show("连接失败!" + GMS.GSMModemGetErrorMsg(), "提示", MessageBoxButtons.OK);
                return;
            }

            //接收短信
            string content = GMS.GSMModemSMSReadAll(0);
            //string content = "8613756890668|测试|8613756890668|测试|06011|尊敬的客户,您的预存话费已经不足20元,请尽快存储话费,以免手机被停机造成不必要的损失|8613756890668|测试呢|8613756890668|姓名:张耀庭职务:业务员月份:12 销售数量:1000 |8613756890668|测试|";
            if (content ==null)
            {
                this.getMessage();
                return;
            }
            content= content.Replace("||", "|"); // 替换||为|
            string[] str_sp = content.Split('|');// 进行分离
            int k=0;
            //解除绑定
            //dataGridView1.DataSource = null;
            //dataGridView1.Refresh();
            dataGridView1.ColumnCount = 2;
            dataGridView1.RowCount = str_sp.Length / 2;
            dataGridView1.Columns[0].HeaderText = "手机号码";
            dataGridView1.Columns[1].HeaderText = "短信息";

            for (int i = 0; i < str_sp.Length / 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    dataGridView1[j, i].Value = str_sp[k];
                    if (k % 2 != 0)
                        this.InsertMessage("insert into RecivedBox (Mobile,Content,reciveTime)values('" + Convert.ToString(dataGridView1[0, i].Value) + "','" + Convert.ToString(dataGridView1[1, i].Value) + "','" + DateTime.Now.ToString() + "') ");
                    k++;
                }
            }
            this.getMessage();
        }
        private void getSplitMessage()
        {
            string content = "";
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                content = content + Convert.ToString(dataGridView1["短信息", i].Value);
            }
            string[] str_sp = content.Split(':');// 进行分离
            int k = 0;
            dataGridView2.ColumnCount = 5;
            dataGridView2.RowCount = str_sp.Length/5 ;
            dataGridView2.Columns[0].HeaderText = "姓名";
            dataGridView2.Columns[1].HeaderText = "职务";
            dataGridView2.Columns[2].HeaderText = "月份";
            dataGridView2.Columns[3].HeaderText = "销售地区";
            dataGridView2.Columns[4].HeaderText = "销售数量";
            for (int i = 0; i < str_sp.Length / 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    dataGridView2[j, i].Value = str_sp[k];
                    k++;
                }
            }
        }

        private void getMessage()
        {
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "message.mdb" + ";Persist Security Info=False");
            OleDbDataAdapter dap = new OleDbDataAdapter("select mobile as 手机号码,content as 短信息,reciveTime as 日期 from RecivedBox", con);
            DataSet ds = new DataSet();
            dap.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }
        private void InsertMessage(string strSql)
        {
            //将短信息内容添加到数据库中
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "message.mdb" + ";Persist Security Info=False");
            con.Open();
            OleDbCommand cmd = new OleDbCommand(strSql, con);
            cmd.ExecuteNonQuery();
            con.Close();

        }

        private void btnFind_Click(object sender, EventArgs e)
        {
            if(dataGridView1.Rows.Count>0)
            this.getSplitMessage();
        }
    }
}


class GMS
{
    //初始化gsm modem,并连接gsm modem
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemInitNew",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern bool GSMModemInitNew(
        string device,
        string baudrate,
        string initstring,
        string charset,
        bool swHandshake,
        string sn);
    //获取短信猫新的标识号码
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemGetSnInfoNew",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern string GSMModemGetSnInfoNew(string device, string baudrate);
    //获取当前通讯端口
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemGetDevice",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern string GSMModemGetDevice();
    //获取当前通讯波特率
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemGetBaudrate",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern string GSMModemGetBaudrate();
    //断开连接并释放内存空间		
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemRelease",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern void GSMModemRelease();
    //取得错误信息	
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemGetErrorMsg",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern string GSMModemGetErrorMsg();
    //发送短信息
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemSMSsend",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern bool GSMModemSMSsend(
        string serviceCenterAddress,
        int encodeval,
        string text,
        int textlen,
        string phonenumber,
        bool requestStatusReport);
    //接收短信息返回字符串格式为:手机号码|短信内容||手机号码|短信内容||
    //RD_opt为1接收短信息后不做任何处理,0为接收后删除信息
    [DllImport("dllforvc.dll",
         EntryPoint = "GSMModemSMSReadAll",
         CharSet = CharSet.Ansi,
         CallingConvention = CallingConvention.StdCall)]
    public static extern string GSMModemSMSReadAll(int RD_opt);
}

⌨️ 快捷键说明

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