Kommunikationsprotokoll
Hier sind die Details zum Protokoll der seriellen Kommunikation zwischen Argus Monitor und der Argus Controller Hardware.
Solange dieses Protokoll eingehalten wird, können Sie eine völlig andere Hardware als unser Arduino-Beispiel entwickeln und zusammen mit Argus Monitor
verwenden.
Command |
Argus Monitor request |
Argus Controller answer |
ProbeDevice |
AA 02 01 crc8 |
C5 <byteCnt> 01 <DEVICE_ID> <TEMP_COUNT> <FAN_COUNT> crc8 |
GetTemp |
AA 02 20 crc8 |
C5 <byteCnt> 20 <tempCount> temp0_H temp0_L temp1_H temp1_L temp2_H temp2_L temp3_H temp3_L crc8 |
GetFanRpm |
AA 02 30 crc8 |
C5 <byteCnt> 30 <fanCount> rpm0_H rpm0_L rpm1_H rpm1_L crc8 |
GetFanPwm |
AA 03 31 <channel> crc8 |
C5 <byteCnt> 31 <channel> <pwm> crc8 |
SetFanPwm |
AA 04 32 <channel> <pwm> crc8 |
C5 <byteCnt> 32/FF crc8 # answer byte2: 32 = ok, FF = error |
EEReadByte |
AA 04 40 <addrH> <addrL> crc8 |
C5 <byteCnt> 40 <VALUE_COUNT> <val> crc8 |
EEWriteByte |
AA 05 41 <addrH> <addrL> <value> crc8 |
C5 <byteCnt> 41/FF crc8 # answer byte2: 41 = ok, FF = error |
Nur für den Befehl ProbeDevice erwartet Argus Monitor die Antwort vom Gerät innerhalb von 200 ms.
Dies hat mit dem internen Initialisierungsvorgängen innerhalb der HW-Überwachungsmodule zu tun.
Wenn Sie Ihre eigene Software für ein Argus Controller Gerät schreiben, stellen Sie bitte sicher, dass die ProbeDevice Anfrage schnell genug beantwortet wird.
Datenformat:
Temperatur: int16_t, Celsius, skaliert mit Faktor 10
Drehzahl U/min: uint16_t
PWM: uint8_t [0..100 %]
Kommunikationsparameter:
57600 Baud, 8N1
CRC8 Berechnung:
uint8_t crc8(uint8_t crc, uint8_t data) {
crc = crc ^ data;
for (uint8_t i = 0; i < 8; i++) {
if (crc & 0x01)
crc = (crc >> 1) ^ 0x8C;
else
crc >>= 1;
}
return crc;
}