Cashcode SM отправка данных в com port

Nur999
Offline
Зарегистрирован: 29.09.2018

Здравствуйте ! Имеется купюро приемник cashcode ,  команды в ком порт посылаются по протоколу ccnet в формате  sync adr lng cmd data crc . Пример команада reset:

byte[] reset = new byte[] { (byte)0x02, (byte)0x03, (byte)0x06,(byte) 0x30,(byte) 0x41,(byte) 0xB3 };

У меня вопрос, что такое data (0x43 ) ? как расчитывается эта величина ?

в инструкции написано что это data necessery for comand , но я все равно не понял как она получается 

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Протокол предполагает рассчет контрольной суммы. В мануале приведена программа этого рассчета. А вообще, разберитесь пока с системой команд этого чуда или идите в платный раздел.

Nur999
Offline
Зарегистрирован: 29.09.2018

я знаю, что приведена программа , вот код расчета crc на java :  

    public static int crc16(byte[] data) {
		int crc = 0;
 
		for (int i = 0; i < data.length; i++) {
			crc ^= data[i] & 0xFF;
			for (int j = 0; j < 8; j++) {
				if ((crc & 0x0001) != 0) {
					crc = 0x8408 ^ crc >>> 1;
				} else {
					crc >>>= 1;
				}
			}
		}
 
		return crc;
0хВ3 результат этой функции , я же не понимаю, откуда взялось 0х41

 

 
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Никак. Команда reset не требует данных, но там как-то криво написано про это:

 if a package cannot be fitted into 250-byte frame a wider frame may be used by setting LNG to 0; the actual packet length is inserted into DATA block bytes 0 and 1 if CMD (if present in the frame) does not require subcommand, otherwise in DATA block bytes 1 and 2; two-byte LNG always follows MSB first