首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 串口通信有关问题(提示:端口被关闭)

2013-01-17 
C# 串口通信问题(提示:端口被关闭)本帖最后由 z525416460 于 2013-01-06 09:20:09 编辑string ls null/

C# 串口通信问题(提示:端口被关闭)
本帖最后由 z525416460 于 2013-01-06 09:20:09 编辑         string ls = null;
        /// <summary>
        /// 根据开阀度数打开阀门
        /// </summary>
        /// <param name="ls_CmdType">指令类型</param>
        /// <returns></returns>
        private void SendCommand(string ls_CmdType,string ls_CmdTypeStr,int i)
        {
            DataTable dt = null;
            string terstr = null;//临时数据表存储“H_Termina”
            string ls_teradds = null;//变量TerAdds
            string ls_str = null;//组合参数
            //string ls_wk = null;//临时TerminalID
            string ls_TerRemark = null;//该设备所属com口
            try
            {
            if (ltvEmp.Items.Count > 0)
            {
                
                if (i == -1)
                {
                    terstr = ltvEmp.SelectedItems[0].SubItems[1].Text;
                }
                else
                {
                    terstr = ltvEmp.Items[i].SubItems[1].Text;
                }
                    isml = terstr;
                    Reclb = 1;

                    dt = dbr.getTable("select TerAdds,TerRemark from H_Termina where TerminalID = '" + isml + "'");                   
                    ls_teradds = dt.Rows[0][0].ToString();
                    ls_TerRemark = dt.Rows[0][1].ToString();


                    switch (ls_CmdType)//如果是开阀就按此格式添加
                    {
                        case "K"://开/关阀
                            ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
                            + ls_TerRemark
                            + isml.Substring(isml.Length - 2, 2)
                            + ls_CmdType
                            + ls_CmdTypeStr;
                            break;
                        case "J"://允许巡逻
                            ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
                            + "000"
                            + ls_CmdType;
                            break;
                        case "C"://禁止巡逻
                            ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
                            + "000"
                            + ls_CmdType;
                            break;
                        case "V"://检查温度
                            ls_str = "L" + ls_teradds.Substring(ls_teradds.Length - 4, 4)


                            + ls_TerRemark
                            + "FF"
                            + ls_CmdType;
                            break;
                        case "T"://检查时间
                            ls_str = "L" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
                            + ls_TerRemark
                            + "FF"

                            + ls_CmdType;
                            break;
                        case "M"://置模式
                            ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
                            + ls_TerRemark
                            + isml.Substring(isml.Length - 2, 2)
                            + ls_CmdType
                            + ls_CmdTypeStr;
                            break;
                        case "H"://搜索汇接器指令1
                            ls_str = "I0000000J";
                            break;
                        case "H2"://搜索汇接器指令2


                            ls_str = "L0000000X";
                            break;
                        default:
                            ls_str = null;
                            break;
                    }

                    string model = protocol.Getinstance(ls_str)._Model;

756行                   spPort.Write(model);//将指令写入串口缓冲区
                    dt.Clear();
                    dt.Dispose();

                    spPort.DiscardOutBuffer();//清理输出缓冲区
                    spPort.DiscardInBuffer();//清理输入缓冲区


                //new protocol().Dispose();//释放类资源
                //}
                
             }
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.ToString(), "警告");
            }

        }
C# 串口通信有关问题(提示:端口被关闭)
                     c#
[解决办法]
调试一下看看写入前spPort的端口状态,提示你写入时端口已经关了。
[解决办法]
ls_str=null了

热点排行