Handy 2000 拧紧枪通信指令

 private bool SendCmdInfo(Commd Canshu, string msg)
        {
            switch (Canshu)
            {
                case Commd.LockGun:
                    msg = "0042001".PadRight(16, ' ');
                    break;
                case Commd.UnLockGun:
                    msg = "0043001".PadRight(16, ' ');
                    break;
                case Commd.Connect:
                    msg = "0001001".PadRight(16, ' ');
                    break;
                case Commd.KeepCon:
                    msg = "9999001".PadRight(16, ' ');
                    break;
                case Commd.DisConnect:
                    msg = "0003001".PadRight(16, ' ');
                    break;
                case Commd.SubscribeTorResult:
                    msg = "0060001".PadRight(16, ' ');
                    break;
                case Commd.AckNowledgeTorResult:
                    msg = "0062001".PadRight(16, ' ');
                    break;
                case Commd.UnSubscribeTorResult:
                    msg = "0063001".PadRight(16, ' ');
                    break;
                case Commd.Pre:
                    msg = "0064001".PadRight(16, ' ') + msg.PadLeft(10, ' ');
                    break;
                case Commd.Vin:
                    msg = "0050001".PadRight(16, ' ') + msg;
                    break;
                case Commd.Channel:
                    channel = msg;
                    msg = "0018001".PadRight(16, ' ') + msg.PadLeft(3, '0');
                    break;
                default:
                    break;
            }
            byte[] bt_Data = Encoding.ASCII.GetBytes(msg);
            byte[] bt_head = Encoding.ASCII.GetBytes((bt_Data.Length + 4).ToString("0000"));
            byte[] bt_send = new byte[bt_Data.Length + 5];
            for (int i = 0; i < bt_head.Length; i++)
            {
                bt_send[i] = bt_head[i];
            }
            for (int i = 0; i < bt_Data.Length; i++)
            {
                bt_send[i + 4] = bt_Data[i];
            }
            bt_send[bt_send.Length - 1] = 0x00;
            bool rel = sw.SendMsg(bt_send);
            bt_send = bt_send.Take(bt_send.Length - 1).ToArray();
            if (rel)
            {
                Form1.mt.Show("发送成功:" + showid.ToString() + " _ " + Encoding.ASCII.GetString(bt_send), false, detailfilename);
            }
            else
            {
                Form1.mt.Show("发送失败:" + showid.ToString() + " _ " + Encoding.ASCII.GetString(bt_send), true, detailfilename);
            }
            return rel;
        }

/// <summary>
        /// true 锁枪 或 false 解锁
        /// </summary>
        /// <param name="IsLock"></param>
        public void LockGun(bool IsLock)
        {
            if (IsLock)
            {
                SendCmdInfo(Commd.LockGun, "");
            }
            else
            {
                SendCmdInfo(Commd.UnLockGun, "");
            }
        }
        /// <summary>
        /// True 订阅 或 false 回答
        /// </summary>
        /// <param name="IsSubNotResponse"></param>
        public void SubscribeTorResult(bool IsSubNotResponse)
        {
            if (IsSubNotResponse)
            {
                SendCmdInfo(Commd.SubscribeTorResult, "");
            }
            else
            {
                SendCmdInfo(Commd.AckNowledgeTorResult, "");
            }
        }
        /// <summary>
        /// 取消订阅
        /// </summary>
        public void UnSubscribeTorResult()
        {
            SendCmdInfo(Commd.UnSubscribeTorResult, "");
        }
        /// <summary>
        /// 修改通道
        /// </summary>
        /// <param name="channel"></param>
        public void ChangeChannel(string channel)
        {
            SendCmdInfo(Commd.Channel, channel);
        }
        /// <summary>
        /// 连接控制器初始命令
        /// </summary>
        public void ConnTorCmd()
        {
            SendCmdInfo(Commd.Connect, "");
        }
        /// <summary>
        /// 保持通信
        /// </summary>
        public void KeepConnTorCmd()
        {
            SendCmdInfo(Commd.KeepCon, "");
        }
        /// <summary>
        /// 断开通信
        /// </summary>
        public void DisConnTorCmd()
        {
            SendCmdInfo(Commd.DisConnect, "");
        }
enum Commd
{
    /// <summary>
    /// 连接  0001
    /// </summary>
    Connect,
    /// <summary>
    /// 断开  0003
    /// </summary>
    DisConnect,
    /// <summary>
    /// 锁枪  0042
    /// </summary>
    LockGun,
    /// <summary>
    /// 解枪  0043
    /// </summary>
    UnLockGun,
    /// <summary>
    /// 订阅拧紧数据  0060001
    /// </summary>
    SubscribeTorResult,
    /// <summary>
    /// 订阅信息收到回传  0062
    /// </summary>
    AckNowledgeTorResult,
    /// <summary>
    /// 取消订阅拧紧数据  0063
    /// </summary>
    UnSubscribeTorResult,
    /// <summary>
    /// 读取历史  0064
    /// </summary>
    Pre,
    /// <summary>
    /// 保持通信 9999
    /// </summary>
    KeepCon,
    /// <summary>
    /// 写入Vin 0050
    /// </summary>
    Vin,
    /// <summary>
    /// 写入通道 0018
    /// </summary>
    Channel
}

开放协议 OpenProtocol ,在github 有相关的一个源程序(OpenProtocolInterpreter), 有参考意义,但不能直接搬代码,写的很死板,二次开发容易出现枪的信息已反馈系统仍提示接收超时.

不推荐(有指导意义)

https://github.com/Rickedb/OpenProtocolInterpreter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fanwenhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值