SE9SE 2015-07-18 00:38 采纳率: 37.5%
浏览 1628

vs 代码 详细 求讲解! 犹豫字数限制只有上半部分,谢谢!

using System;
using System.IO.Ports;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using INIFILE;
using System.Text.RegularExpressions;
using ThoughtWorks.QRCode.Codec;
using System.Drawing.Printing;

namespace SerialPortConnection
{
public partial class Form1 : Form
{
Dictionary deviceTypes = new Dictionary();
LonzClass.DataDeal.Serial.SerialData serialData = new LonzClass.DataDeal.Serial.SerialData(0xaa, 0, 16, 3);
LonzClass.Windows.myCom MyCom = new LonzClass.Windows.myCom();

    private delegate void deMessboxShow(string txt);//定义类型

    private void MessboxShow(string txt)
    {
        Invoke(new deMessboxShow(ShowMesBox),txt);//调用
    }
    private void ShowMesBox(string txt)
    {
        MessageBox.Show(txt);//常用参数
    }

    ushort devicegenre { get; set; }//设备类型  
    uint deviceBH { get; set; }//设备编号
    public Form1()
    {
        InitializeComponent();
        serialData.ReceiveSerialBytes += serialData_ReceiveSerialBytes;
        MyCom.DataReceived += MyCom_DataReceived;

        nUDDeviceID.Enabled = false;
        btnSend.Enabled = false;
        btnPrint.Enabled = false;

        #region test
        //DeviceModel deviceInfo=new DeviceModel ();
        //deviceInfo.ISUSED=0;
        //deviceInfo.DEVICECODE=2;
        //deviceInfo.DEVICETYPE=1033;
        //Dal.GetDevice(deviceInfo);
        #endregion
    }

    void MyCom_DataReceived(object bytes)
    {
        txtReceive.AppendText("收到数据(" + ((byte[])bytes).Length + "):"); //接收数据控件打印
        foreach (var item in (byte[])bytes) //数据的处理
        {
            txtReceive.AppendText(item.ToString("X2") + " ");
        }
        txtReceive.AppendText("\r\n");
        txtReceive.ScrollToCaret();
        txtReceive.ScrollToCaret();
        serialData.ReceiveData((byte[])bytes);
    }

    //加载
    private void Form1_Load(object sender, EventArgs e)
    {
        INIFILE.Profile.LoadProfile();//加载所有

        // 预置波特率
        switch (Profile.G_BAUDRATE)
        {
            case "300":
                cbBaudRate.SelectedIndex = 0;
                break;
            case "600":
                cbBaudRate.SelectedIndex = 1;
                break;
            case "1200":
                cbBaudRate.SelectedIndex = 2;
                break;
            case "2400":
                cbBaudRate.SelectedIndex = 3;
                break;
            case "4800":
                cbBaudRate.SelectedIndex = 4;
                break;
            case "9600":
                cbBaudRate.SelectedIndex = 5;
                break;
            case "19200":
                cbBaudRate.SelectedIndex = 6;
                break;
            case "38400":
                cbBaudRate.SelectedIndex = 7;
                break;
            case "115200":
                cbBaudRate.SelectedIndex = 8;
                break;
            default:
                {
                    MessageBox.Show("波特率预置参数错误。");
                    return;
                }
        }
        if (!string.IsNullOrEmpty(Profile.G_DEVICETYPE))
        {
            string[] deviceTypeStr = Profile.G_DEVICETYPE.Split(',');
            foreach (var item in deviceTypeStr)
            {
                var s = item.Split(':');
                deviceTypes.Add(s[0], s[1]);
            }
            deviceTypeComboBox.Items.AddRange(deviceTypes.Keys.ToArray());
            deviceTypeComboBox.SelectedIndex = 0;
        }
        //预置波特率
        switch (Profile.G_DATABITS)
        {
            case "4":
                cbDataBits.SelectedIndex = 0;
                break;
            case "5":
                cbDataBits.SelectedIndex = 1;
                break;
            case "6":
                cbDataBits.SelectedIndex = 2;
                break;
            case "7":
                cbDataBits.SelectedIndex = 3;
                break;
            case "8":
                cbDataBits.SelectedIndex = 4;
                break;
            default:
                {
                    MessageBox.Show("数据位预置参数错误。");
                    return;
                }

        }
        //预置停止位
        switch (Profile.G_STOP)
        {
            case "1":
                cbStop.SelectedIndex = 0;
                break;
            case "1.5":
                cbStop.SelectedIndex = 1;
                break;
            case "2":
                cbStop.SelectedIndex = 2;
                break;
            default:
                {
                    MessageBox.Show("停止位预置参数错误。");
                    return;
                }
        }

        //预置校验位
        switch (Profile.G_PARITY)
        {
            case "NONE":
                cbParity.SelectedIndex = 0;
                break;
            case "ODD":
                cbParity.SelectedIndex = 1;
                break;
            case "EVEN":
                cbParity.SelectedIndex = 2;
                break;
            default:
                {
                    MessageBox.Show("校验位预置参数错误。");
                    return;
                }
        }

        //检查是否含有串口
        string[] str = SerialPort.GetPortNames();
        if (str == null)
        {
            MessageBox.Show("本机没有串口!", "Error");
            return;
        }

        //添加串口项目
        foreach (string s in System.IO.Ports.SerialPort.GetPortNames())
        {//获取有多少个COM口               
            cbSerial.Items.Add(s);
        }

        //串口设置默认选择项
        cbSerial.SelectedIndex = 0;         //note:获得COM9口,但别忘修改

        Control.CheckForIllegalCrossThreadCalls = false;    //这个类中我们不检查跨线程的调用是否合法(因为.net 2.0以后加强了安全机制,,不允许在winform中直接跨线程访问控件的属性)            
    }
  • 写回答

2条回答 默认 最新

  • 91program 博客专家认证 2015-07-18 02:56
    关注

    代码太长,又没有看到是什么问题
    只能飘过...

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败