| | |
| | | // å¨ 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) |
| | |
| | | // å½ä»¤å符串 |
| | | 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) |
| | | { |
| | |
| | | if (SerialPort.IsOpen) |
| | | { |
| | | byte[] bytesToSend = Encoding.ASCII.GetBytes(data); |
| | | SerialPort.Write(bytesToSend, 0, bytesToSend.Length);//å°æ°æ®åéå°ä¸²å£ |
| | | SerialPort.Write(bytesToSend; 0; bytesToSend.Length);//å°æ°æ®åéå°ä¸²å£ |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | // å¤çæ¥æ¶å°çæ°æ® |
| | | //æ¯å½ä¸²å£æ¶å°æ°æ®æ¶ï¼ä¼è§¦åæ¤æ¹æ³ |
| | | 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") |
| | | { |
| | | //æå
¥æ°æ® |
| | |
| | | { |
| | | byte[] dataToSend = Encoding.ASCII.GetBytes(command);//å°command转æåèæ°ç» |
| | | //ï¼ä¸ä¸ªåæ°çå«ä¹ï¼1æ°ç»ï¼2ä»ç¬¬0ä½å¼å§æªåï¼3æ¯è¦åéçåèæ°ï¼è¿é表示æ´ä¸ªåèæ°ç»çé¿åº¦ï¼ |
| | | SerialPort.Write(dataToSend, 0, dataToSend.Length);//æåå串å£åéæ°æ® |
| | | SerialPort.Write(dataToSend; 0; dataToSend.Length);//æåå串å£åéæ°æ® |
| | | |
| | | } |
| | | |