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

问题描述

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("rn");
        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中直接跨线程访问控件的属性)
    }

解决方案

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

解决方案二:

就是串口通讯,具体为什么要这么通讯,取决于你的下位机怎么定义的。

时间: 2024-10-29 11:54:13

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

代码-初学求讲解例程STM32寄存器版LED闪烁

问题描述 初学求讲解例程STM32寄存器版LED闪烁 本人对下图中的代码理解:如果头文件SYSTEM.H没有在关联的文件中定义,那么就定义头文件SYSTEM.H ,画红圈的内容就是写一个头文件SYSTEM.H. 请问我的理解对吗?如不对请讲解,谢谢:) SYSTEM.H是固件库还是作者自己写的? 把下图中的例程编译后出现错误:C:KeilARMIncSTSTM32F10xstm32f10x.h(96): error: #35: #error directive: "Please select f

求大神给该段代码详细注解(MFC 俄罗斯方块)

问题描述 求大神给该段代码详细注解(MFC 俄罗斯方块) // TetrisDlg.cpp : 实现文件 // #include "stdafx.h" #include "myself.h" #include "Tetris.h" #include "TetrisDlg.h" #include #include // #include // #include //导入声音头文件 // #pragma comment(lib,&

Android LibGDX游戏引擎开发教程(三) 示例代码详细讲解

承接了上一篇文章中关于环境搭建的简单示例,这一篇我会详细讲解FirstGame和HelloGameActivity类中 的代码. 一.ApplicationListener接口详解 1.简单代码示例,FirstGame.java: package com.example.hellolibgdx; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.gra

图片用记事本打开有代码是否有病毒求讲解

问题描述 图片用记事本打开有代码是否有病毒求讲解 解决方案 看上去这是一个photoshop文件,你可以上传这个文件到 https://www.virustotal.com/ 在线监测下. 解决方案二: 图片用记事本打开有代码这是正常的,因为图片本身就是由代码编写成的,至于有没有病毒不能根据这个来判断. 解决方案三: 图片用记事本打开当然是这样的,记事本都不支持图片格式,如果有病毒,杀毒软件会提示. 解决方案四: 图片的头部有一些相关的信息,比如时间 拍摄手机的机型等

fpga-DDR3详细的读写时序,求讲解

问题描述 DDR3详细的读写时序,求讲解 本人在研究DDR3的控制,但是关于具体的DDR3的读写时序很是困惑, 连续读时的预充电,自刷新之类的不是很明白, 求详细讲解,谢谢 下面两张图是我自己跑的ModelSim仿真,图中的写时序不是很明白,中间出现的预充电,自刷新之类的操作,不太明白这些出现的频率,为什么会是这样的时序?

javascript滑动图片代码,求详细解释每一句的作用,急用,请帮忙

问题描述 javascript滑动图片代码,求详细解释每一句的作用,急用,请帮忙 /**///选择器 function $a(id,tag){var re=(id&&typeof id!="string")?id:document.getElementById(id);if(!tag){return re;}else{return re.getElementsByTagName(tag);}} //焦点滚动图 点击移动 function movec() { var o=

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 详细图文讲解

android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程   -------------------------

iostream-蓝桥杯 未名湖的烦恼 fun(m-1,n)+fun(m,n-1)这句代码详细解释

问题描述 蓝桥杯 未名湖的烦恼 fun(m-1,n)+fun(m,n-1)这句代码详细解释 #include "iostream" using namespace std; int fun(int m,int n) { if(m { return 0; } else if (n==0) { return 1; } else return fun(m-1,n)+fun(m,n-1); } int main() { int m,n; cout cin>>m>>n;

图像处理-一个图像修复的matlab代码,求帮忙调试~~

问题描述 一个图像修复的matlab代码,求帮忙调试~~ % I = PATCH_INPAINT(Iorg, Mask, verbose) inpaints an image % % Iorg - original image % Mask - replacement mask; pixels where mask==1 will be inpainted % % I - inpainted image function A = patch_inpaint(Aorg,Morg, verbose,