}//обновляем данные о менеджере(ставим ему в поле задачу) private bool CreateCommand(int TId, int CID, int adId) { comand c = new comand(); ComandRepository _c = new ComandRepository(); c.comandId = TId; c.chatidID = CID; c.adminID = adId; c.taskID = TId; _c.Create(c); _c.Save(); return(true); }//создаем команду для задачи
int intReadData(UInt16 adr, UInt16 count, comand cmd) { byte[] buff = new byte[] { btDevAdr, (byte)cmd, (byte)(adr >> 8), (byte)adr, (byte)(count >> 8), (byte)count, 0, 0 }; UInt16 crc = chMBCRC16(buff, 6); int size = count * 2 + 6; buff[7] = (byte)(crc >> 8); buff[6] = (byte)(crc & 0xFF); #if DEBUG if (cmd == comand.RD_HOLDING) { //Debug.WriteLine(cmd.ToString() + " adr=" + adr.ToString() + " count=" + count.ToString()); //Debug.WriteLine("<-" + sBtoS(buff, 8)); logger.Add(cmd.ToString() + " adr=" + adr.ToString() + " count=" + count.ToString()); } #endif try { if (!spPort.IsOpen) { this.blDevCnctd = false; return(-1); } spPort.ReadExisting(); spPort.Write(buff, 0, 8); // while (spPort.BytesToRead != count * 2 + 5) { if (!spPort.IsOpen) break; }; int i = 0; while (spPort.BytesToRead < count * 2 + 5) { i++; if (!spPort.IsOpen) { break; } if (i > 500) { break; } Thread.Sleep(1); } ; size = spPort.BytesToRead; buff = new byte[size]; try { spPort.Read(buff, 0, size); } catch (TimeoutException ex) { logger.Add("Нет Ответа"); return(-1); }; } catch (Exception ex) { logger.Add("Ошибка записи в порт"); return(-1); }; if (size < 3) { logger.Add("Нет ответа"); return(-1); } // Debug.WriteLine(sBtoS(buff, size)); crc = chMBCRC16(buff, (ushort)(size - 2)); if ((crc >> 8) != buff[size - 1] || (crc & 0xFF) != buff[size - 2]) { logger.Add("Ошибка CRC"); return(-1); } if (buff[1] == (byte)cmd) { int k = 0; for (int i = 3; i < buff[2] + 2; i += 2) { UInt16 temp = (UInt16)(buff[i + 1] + (buff[i] << 8)); if (cmd == comand.RD_HOLDING) { uiHoldingReg[adr + k] = temp; } ; if (cmd == comand.RD_INPUT) { uiInputReg[adr + k] = temp; } k++; } #if DEBUG if (cmd == comand.RD_HOLDING) { logger.Add("-> " + sBtoS(buff, (UInt16)buff.Length)); } #endif } else { logger.Add("ModBus ошибка команды чтения. Код" + buff[1].ToString()); return(-1); }; return(0); }