Example #1
0
        //---------------------------单击“读测试(逻辑地址)”按钮----------------------------
        private void btnPnFlashRead_Click(object sender, EventArgs e)
        {
            byte sector;     //扇区号
            int  whi;        //偏移量
            byte n;          //读取字节数
            int  i;
            byte len;

            // 2. 临时变量赋值tbOffset2

            sector = Convert.ToByte(tbSector1.Text);  // 将TextBox中的Text转换为Byte类型
            //if (sector > 63 || sector < 55)
            //{
            //    MessageBox.Show("请输入正确扇区号!");
            //    return;
            //}
            whi    = Convert.ToInt32(tbOffset1.Text); // 将TextBox中的Text转换为Byte类型
            sector = (byte)(sector + whi);
            n      = Convert.ToByte(tbCount1.Text);


            byte[] SendByteArray = new byte[5];

            this.Txt_recv1.Text = "";
            this.Txt_recv2.Text = "";
            this.Txt_recv1.Refresh();
            this.Txt_recv2.Refresh();

            this.tb_statue.Text = "运行状态:" + "单击“终端UE Flash 逻辑读测试”按钮...";
            this.tb_statue.Refresh();

            try
            {
                SendByteArray[0] = (byte)'r';
                SendByteArray[1] = sector;          //第几页
                SendByteArray[2] = (byte)(0 / 256); //偏移量高字节
                SendByteArray[3] = (byte)(0 % 256); //偏移量低字节
                SendByteArray[4] = n;               //写入字节数

                //发送、接收、显示
                //sci.SCISendData(ref SendByteArray);
                bool flag = sci.SCISendFrameData(ref SendByteArray);

                Thread.Sleep(500);
                if (sci.SCIReceiveData(ref recvData))
                {
                    //MessageBox.Show(Encoding.Default.GetString(recvData));

                    string str = null;
                    this.Txt_recv2.Text = Encoding.Default.GetString(recvData);
                    for (int j = 0; j < recvData.Length; j++)
                    {
                        str += recvData[j].ToString("X2");
                        str += "-";
                    }
                    this.Txt_recv1.Text = str;    //16进制字符串
                }
            }
            catch
            {
                this.Txt_recv1.Text = "终端UE Flash读取写入失败,检查UART_User串口连接是否成功!";
            }
        }
Example #2
0
        //========================以下是本窗体的各个事件响应函数==========================

        //------------------------单击“检测PC节点”按钮----------------------------------
        private void btnCheckPcNode_Click(object sender, EventArgs e)
        {
            //int ret;            //返回值
            //string com = "";    //串口信息
            string sTemp = "";

            //byte[] recv = null;//保存串口接收信息
            //byte[] shake = { (byte)10, (byte)'s', (byte)'h', (byte)'a', (byte)'k', (byte)'e' }; //与终端握手帧数据

            byte[] userShake = { (byte)11, (byte)'a', (byte)'u', (byte)'a', (byte)'r', (byte)'t', (byte)'?' }; //与终端握手帧数据
            //byte[] send = { (byte)'S' };

            string[] SCIPorts;
            SCIPorts = SCI.SCIGetPorts();

            this.Refresh();                     //刷新显示

            //if (emuart._Uartport != null) emuart._Uartport.Close();
            //Thread.Sleep(10);   //等待串口关闭
            //emuart = EMUART.getInstance();    //每次“重新连接”重新实例化
            //ret = emuart.findDevice(out com, 115200);  //寻找emuart设备
            //this.lbl_PC_Node_State.Text = com;       //右上角显示区

            //if (ret == 1) goto btn_uartcheck_Click_EXIT1;
            ////(4.2)找到串口,没有找到UE,退出函数
            //else if (ret == 2) goto btn_uartcheck_Click_EXIT2;
            //emuart.bufferClear();   //清除接收数组缓冲区
            //emuart.send(shake, out recv, 200, 3); //获得设备的信息在recv中
            //if (recv == null) goto btn_uartcheck_Click_EXIT3;  //没有接收到设备返回消息

            //if (recv.Length == Marshal.SizeOf(typeof(shakeData)))
            //{
            //    //byte数组转结构体
            //    shakedata = (shakeData)bytesToStruct(recv, typeof(shakeData));
            //    //获取握手帧数据
            //    uecomType = Encoding.Default.GetString(shakedata.uecomType).Replace("\0", "");
            //    mcuType = Encoding.Default.GetString(shakedata.mcuType).Replace("\0", "");

            //    //设置设备信息
            //    sTemp = com + ":" + uecomType + " " + mcuType;  //设备信息
            //    //状态提示
            //    this.lbl_PC_Node_State.Text = sTemp;     //右上角显示区
            //    this.btnPnFlashErase.Enabled = true;
            //    this.btnPnFlashRead.Enabled = true;
            //    this.btnPnFlashReadAddr.Enabled = true;
            //    this.btnPnFlashWrite.Enabled = true;

            //}
            //else if (recv.Length == Marshal.SizeOf(typeof(newshakeData)))
            //{
            int i;

            //byte数组转结构体
            //newshakedata = (newshakeData)bytesToStruct(recv, typeof(newshakeData));
            ////获取握手帧数据
            //uecomType = Encoding.Default.GetString(newshakedata.uecomType).Replace("\0", "");
            //mcuType = Encoding.Default.GetString(newshakedata.mcuType).Replace("\0", "");
            //设置设备信息
            //sTemp = com + ":" + uecomType + " " + mcuType;  //设备信息
            if (sci != null && sci.IsOpen)
            {
                sci.Close();
            }

            //发送全局变量_SendByteArray中的数据,并返回结果
            for (i = 0; i < SCIPorts.Length; i++)
            {
                //if (SCIPorts[i] == com) continue;

                sci = new SCI(SCIPorts[i], 115200);
                if (sci.SCIOpen())
                {
                    //sci.SCISendData(ref send);           //发送与Uart_User串口握手的数据信息
                    sci.SCISendFrameData(ref userShake);

                    Thread.Sleep(500);
                    if (sci.SCIReceiveData(ref recvData))
                    {
                        //MessageBox.Show(System.Text.Encoding.Default.GetString(recvData));

                        //if (recvData.Length == 0 || !System.Text.Encoding.Default.GetString(recvData).Contains("Yes,I am an emuart!!"))
                        //{
                        //    this.tb_statue.Text = "未找到终端设备";
                        //    //this.lbl_PC_Node_State.Text = "未找到终端设备";

                        //    MessageBox.Show("检查UART_User(KL36:UART0)串口有无接好");

                        //    this.btnPnFlashErase.Enabled = false;
                        //    this.btnPnFlashRead.Enabled = false;
                        //    this.btnPnFlashReadAddr.Enabled = false;
                        //    this.btnPnFlashWrite.Enabled = false;
                        //    sci.Close();
                        //    continue;
                        //}
                        if (System.Text.Encoding.Default.GetString(recvData).Contains("Yes,I am an emuart!!"))       //记录UART_User串口的Com号
                        {
                            string retInfo = System.Text.Encoding.Default.GetString(recvData);
                            this.tb_statue.Text = "找到终端设备";
                            //this.lbl_PC_Node_State.Text = "连接终端在" + PublicVar.g_SCIComNum;
                            PublicVar.g_SCIComNum = SCIPorts[i];

                            this.btnPnFlashErase.Enabled    = true;
                            this.btnPnFlashRead.Enabled     = true;
                            this.btnPnFlashReadAddr.Enabled = true;
                            this.btnPnFlashWrite.Enabled    = true;
                            //sTemp = retInfo.Substring(retInfo.IndexOf('.') + 1, retInfo.Length - retInfo.IndexOf('.') - 1);
                            //sTemp = retInfo.Substring(retInfo.IndexOf('!') + 2, retInfo.Length - retInfo.IndexOf('!') - 2);
                            sTemp = retInfo.Substring(retInfo.IndexOf('!') + 2, 19);
                            //sTemp = retInfo.Substring(retInfo.IndexOf('.') + 1, retInfo.Length - retInfo.IndexOf('.') - 1);
                            this.lbl_PC_Node_State.Text = SCIPorts[i] + ":" + sTemp;     //右上角显示区

                            //this.lbl_PC_Node_State.Text = sTemp;     //右上角显示区
                            break;                                                                  //找到后UART_User串口后,跳出循环
                        }
                    }
                }
            }
            if (i == SCIPorts.Length)
            {
                this.tb_statue.Text = "未找到终端设备";
                MessageBox.Show("检查UART_User(KL36:UART0)串口有无接好");
                this.btnPnFlashErase.Enabled    = false;
                this.btnPnFlashRead.Enabled     = false;
                this.btnPnFlashReadAddr.Enabled = false;
                this.btnPnFlashWrite.Enabled    = false;
                sci.Close();
            }
            //状态提示

            //}
            //else goto btn_uartcheck_Click_EXIT3;  //接收到错误返回
            ////(5)退出区
            ////(5.1)退出函数
            //btn_uartcheck_Click_EXIT:
            //    btnCheckPcNode.Enabled = true;
            //    return;

            ////(5.2)不存在可用串口
            //btn_uartcheck_Click_EXIT1:
            //    btnCheckPcNode.Text = "运行状态:当前不存在可用串口";  //右上角提示区
            //    this.btnPnFlashErase.Enabled = false;
            //    this.btnPnFlashRead.Enabled = false;
            //    this.btnPnFlashReadAddr.Enabled = false;
            //    this.btnPnFlashWrite.Enabled = false;
            //    goto btn_uartcheck_Click_EXIT;

            ////(5.3)存在串口,但不存在emuar设备
            //btn_uartcheck_Click_EXIT2:
            //    emuart.terminate(115200); //发送数据给终端设备,让终端设备清空其数据缓冲区
            //    btnCheckPcNode.Text = "重新连接";  //连接按键文本
            //    lbl_PC_Node_State.Text = "运行状态:已连接串口" + com + "但未找到设备";   //右上角提示区
            //    this.btnPnFlashErase.Enabled = false;
            //    this.btnPnFlashRead.Enabled = false;
            //    this.btnPnFlashReadAddr.Enabled = false;
            //    this.btnPnFlashWrite.Enabled = false;
            //    goto btn_uartcheck_Click_EXIT;

            //(5.4)没有正确接收到设备返回消息
            //btn_uartcheck_Click_EXIT3:
            //    emuart.terminate(115200); //发送数据给终端设备,让终端设备清空其数据缓冲区
            //    btnCheckPcNode.Text = "重新连接";   //连接按钮文本
            //    lbl_PC_Node_State.Text = "找到GEC在" + com + "但握手失败,请再次单击[重新连接]按钮";   //右上角提示区
            //    this.btnPnFlashErase.Enabled = false;
            //    this.btnPnFlashRead.Enabled = false;
            //    this.btnPnFlashReadAddr.Enabled = false;
            //    this.btnPnFlashWrite.Enabled = false;
            //    goto btn_uartcheck_Click_EXIT;
        }