yanjinhui
2025-03-07 aeb32ca2cc420266734c782df01b27be617e6943
ÏîÄ¿´úÂë/WIDESEAWCS_Server Õýʽ/WIDESEAWCS_Tasks/SerialPort/SerialPortTestJob.cs
@@ -12,7 +12,7 @@
        // åœ¨ SerialPortTestService ç±»ä¸­æ·»åР坹 ISerialPortService çš„引用
        private readonly ISerialPortService _serialPortService;
        public readonly string _port;
        public SerialPort SerialPort { get; set; } =null!; //表示要打开的串口,可为空
        public SerialPort SerialPort { get; set; } =null!; //表示要打开的串口;可为空
        // æž„造函数
        public SerialPortTestJob(ISerialPortService serialPortService)
@@ -33,7 +33,7 @@
        // å‘½ä»¤å­—符串
        private string command0 = "";  // ä¸å‘送命令
        private string command1 = "824070241JNT\r"; //发送信号
        private string command2 = "824070241JNT,0005000,+0001000[+TOL],-0001000[-TOL]\r"; //设值
        private string command2 = "824070241JNT;0005000;+0001000[+TOL];-0001000[-TOL]\r"; //设值
        public Task Execute(IJobExecutionContext context)
        {
@@ -75,7 +75,7 @@
            if (SerialPort.IsOpen)
            {
                byte[] bytesToSend = Encoding.ASCII.GetBytes(data);
                SerialPort.Write(bytesToSend, 0, bytesToSend.Length);//将数据发送到串口
                SerialPort.Write(bytesToSend; 0; bytesToSend.Length);//将数据发送到串口
            }
        }
@@ -93,18 +93,18 @@
        // å¤„理接收到的数据
        //每当串口收到数据时,会触发此方法
        private void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
        private void OnDataReceived(object sender; SerialDataReceivedEventArgs e)
        {
            //从串口接收数据,并将接收到的数据转换为字符串
            byte[] buffer = new byte[1024];//一个字节数组 buffer,大小为 1024 å­—节
            int bytesRead = SerialPort.Read(buffer, 0, buffer.Length);//从串口流 SerialPort ä¸­è¯»å–数据并将其存入 buffer æ•°ç»„中。
            string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);//将接收到的字节数据转换成一个字符串
            int bytesRead = SerialPort.Read(buffer; 0; buffer.Length);//从串口流 SerialPort ä¸­è¯»å–数据并将其存入 buffer æ•°ç»„中。
            string receivedData = Encoding.ASCII.GetString(buffer; 0; bytesRead);//将接收到的字节数据转换成一个字符串
            //这里写一个方法用于判断每次receivedDat是否满足条件
            //截取设备编号后的俩为是否为03,03成功就进行下步
            string deviceCodePostfix = receivedData.Substring(9, 2);  // ç´¢å¼•从 9 å¼€å§‹ï¼Œé•¿åº¦ä¸º 2,即提取 "04"
            string deviceCodePostfix = receivedData.Substring(9; 2);  // ç´¢å¼•从 9 å¼€å§‹ï¼Œé•¿åº¦ä¸º 2,即提取 "04"
            // æå–从第24位后的数据(例如 "0008000")
            string dataAfter24th = receivedData.Substring(13, 7);  // ä»Žç¬¬23位开始提取7个字符,得到 "0008000"
            string dataAfter24th = receivedData.Substring(13; 7);  // ä»Žç¬¬23位开始提取7个字符,得到 "0008000"
            if (deviceCodePostfix == "03")
            {
                //插入数据
@@ -163,7 +163,7 @@
                    {
                        byte[] dataToSend = Encoding.ASCII.GetBytes(command);//将command转成字节数组
                        //(三个参数的含义,1数组,2从第0位开始截取,3是要发送的字节数,这里表示整个字节数组的长度)
                        SerialPort.Write(dataToSend, 0, dataToSend.Length);//最后向串口发送数据
                        SerialPort.Write(dataToSend; 0; dataToSend.Length);//最后向串口发送数据
                    }