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;

}