Передать ASCI строку в COM объект
☑
0
Impuls20_03
02.05.18
✎
16:50
Такая тема. Использую MSCOM32 для работы с COM портами. На оборудование надо отправить команду: f8 55 ce 01 00 90 90 00
Не подозревая подвоха перевожу hex в dec, формирую строку:
стр = Символ(248)+Символ(85)+Символ(206)+Символ(1)+Символ(0)+Символ(160)+Символ(160)+Символ(0));
На оборудовании получаю: 6f 55 49 01 00 a0 a0 00
Пишу такой код:
Для пе=1 по 255 Цикл
КомПорт.Output = Символ(пе);
КонецЦикла;
На оборудовании получаю:
01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 ................
11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 ...............
21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 !"#$%&'()*+,-./0
31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 123456789:;<=>?@
41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 ABCDEFGHIJKLMNOP
51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 QRSTUVWXYZ[\]^_`
61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop
71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 3f qrstuvwxyz{|}~?
3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f ????????????????
3f 3f 3f 3f 3f 3f 3f 98 3f 3f 3f 3f 3f 3f 3f a0 ??????????????
3f 3f 3f a4 3f a6 a7 3f a9 3f ab ac ad ae 3f b0 ???¤?¦§?©?«¬®?°
b1 3f 3f 3f b5 b6 b7 3f 3f 3f bb 3f 3f 3f 3f 41 ±???µ¶·???»????A
41 41 41 41 41 3f 43 45 45 45 45 49 49 49 49 3f AAAAA?CEEEEIIII?
4e 4f 4f 4f 4f 4f 3f 4f 55 55 55 55 59 3f 3f 61 NOOOOO?OUUUUY??a
61 61 61 61 61 3f 63 65 65 65 65 69 69 69 69 3f aaaaa?ceeeeiiii?
6e 6f 6f 6f 6f 6f 3f 6f 75 75 75 75 79 3f 79 nooooo?ouuuuy?y
Т.е. первые 127 символов нормально, а дальше как повезет. Тема то старая, но сам решить не могу. Пробовал отдавать массив - выдает ошибку. Подскажите куда можно копнуть?
1
Garykom
гуру
02.05.18
✎
16:55
2
Impuls20_03
02.05.18
✎
17:08
(1) Это не совсем то. Она все равно будет отправлять строку. Строку я могу и mscom32 отправить. Как послать массив байтов?
3
Garykom
гуру
02.05.18
✎
17:47
(2) Там есть исходники отправляй что хочешь.
4
zwei
02.05.18
✎
17:53
Преобразуй через adodb.stream в ansi
5
int32i
02.05.18
✎
18:52
У MSCOMM32 есть Property InputMode As InputModeConstants
Const comInputModeText = 0
Const comInputModeBinary = 1
покопай в этом направлении
6
Impuls20_03
03.05.18
✎
10:54
Всем спасибо. Решил проблему через вызов VBScript. Вот код:
Функция ВернутьСтр(Стр)
sc = Новый COMОбъект("MSScriptControl.ScriptControl");
sc.language="VBscript";
Команда = "";
Для н = 1 По СтрДлина(Стр) Цикл
Команда = Команда + sc.eval("Chr("""+КодСимвола(Стр, н)+""")");
КонецЦикла;
Возврат Команда;
КонецФункции
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший