Здравствуйте. Попалась тут очень забавная задачка.
Есть софт и некий аппарат. Софт написан немцами давным давно на VB. Так вот проблема в том что этот софт адекватно видит прибор и может с ним работать только на винде с установленным форматом даты Немецкий (Германия). Если его поменять на русский то прога в упор не видит прибора. Причем в декомпилированных текстах формата даты который бы учавствовал в обмене я не увидел.
Как думаете это баг или фича??
И второе.
Перехватил дамп между прибором и софтом. Достал функцию контроля соединения.
И тут начинаются пляски.
Соединение проходит успешно, по крайней мере событие оригинального кода так говорит.
Дальше формирую запрос:
перехваченный дамп:
55 0E 21 20 80 07 00 00 00 EB AA D3 5B AA
формат тут такой:
[55 0E 21 20] [80 07 00 00 00] [EB AA D3 5B AA]
cзапрос - еще чего то, думал длина но нет - в конце CRC того что посередине.
суть в том что немцы производят невероятное количество лишних манипуляций но суть в том что.
есть строка “8007000000” далее она по 2 символа переводится в число и затем в символ char.
Далее полученная строка преобразуется в массив байт кодом:
stringBuilder.Insert(0, (char)(Convert.ToInt32(text2, 16))); // каждые 2 символа в число и символ
byte[] bytes = Encoding.GetEncoding(1252).GetBytes(strInput);
так вот у меня из строки 80 07 всегда получается 3f 07
Как это вообще возможно то?? в данном случае формат даты не имеет значения.
Че за цыганские шутки???