Имя: Пароль:
1C
1С v8
Передать 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("""+КодСимвола(Стр, н)+""")");
    КонецЦикла;
    Возврат Команда;
    
КонецФункции