Имя: Пароль:
1C
 
Туплю: нужно в некое устройство послать целое (4 байта) из 1С
0 Михаил Козлов
 
02.07.18
09:54
Метод (устройства): Послать(строка).
Как сформировать строку для посыла по известному числу?
1 H A D G E H O G s
 
02.07.18
09:56
Вот здесь можно заявку составить

https://www.pochta.ru/parcels
2 spectre1978
 
02.07.18
09:58
возьмите дельфю и не мучьтесь :) Ну а если серьезно - 1С вроде как с недавних пор научилась с бинарями работать...
3 Михаил Козлов
 
02.07.18
10:04
(2) Как эти бинарные данные в 1С сформировать?
4 Михаил Козлов
 
02.07.18
10:14
Если число "разложить" на "байты" (младший - остаток от деления на 256 и далее по степеням 2-ки: 8,16,24,32) и взять Символ(...) может получиться?
5 ptiz
 
02.07.18
10:18
(3) Может так?
Стр = Символ(1) + Символ(2) + Символ(140)  + Символ(200) + Символ(255)
6 lodger
 
02.07.18
10:22
Функция Из_Число_В_XСчисл(Знач Значение, Шаблон)
    Результат="";
    Основание = СтрДлина(Шаблон);
    Пока Значение>0 цикл
        Остат = Значение%Основание;
        Результат1=Сред(Шаблон,Остат+1,1);
        Значение = (Значение-Остат)/Основание;
        Результат = Результат1 + Результат;
    КонецЦикла;
    Возврат Результат;
КонецФункции
© http://catalog.mista.ru/public/70053/
7 spectre1978
 
02.07.18
10:39
(6) это все хорошо, но в результате мы получим строку, где биты представляются в виде символов "0" и "1", например. А устройству-то биты нужны, а не символы "0" и "1".
8 Михаил Козлов
 
02.07.18
10:41
(6) Переводить в 256-ричную систему, а в качестве шаблона взять символы Unicode?
А уже попробовал так: не уверен, что правильно.
9 lodger
 
02.07.18
10:44
(7) со слов (0) Метод (устройства): Послать(строка).
10 bolobol
 
02.07.18
10:46
(9) Так строка должна быть 4 байта, а в (6) я не вижу... ничего.
11 Вафель
 
02.07.18
10:46
А если просто число слать?
12 ptiz
 
02.07.18
10:47
(8) Чего переводить? Куда переводить?
Символ(0...255) - это и есть нужный байт
13 bolobol
 
02.07.18
10:48
(12) Какой символ у числа 256893 ?
14 ptiz
 
02.07.18
10:53
(13) Байт принимает значения от 0 до 255. Автору надо передать 4 байта. Вот пусть и передает.
15 Михаил Козлов
 
02.07.18
11:06
(12) 8 относилось к предложению (6)
(14) Послать нужно строку 4 байта, т.е. 4 символа. Если я Вас правильно понял, формировать эту строку можно через Символ(...), подставляя в качестве параметра "нужное" число.
В (8) я написал, что так и делал, но не уверен.
Например, для числа 11023 "побайтное" разложение = (0,0,43,15). Для 256893 - (0,3,235,125), строка = " ë}".
16 Михаил Козлов
 
02.07.18
11:08
(11) Попробовать можно: не уверен, что будет 4 байта.
17 Вафель
 
02.07.18
11:20
(16) с устройством от 1с по ком объекту связь?
18 bolobol
 
02.07.18
11:22
(15) Точно порядок байтиков верный?
19 Вафель
 
02.07.18
11:23
(15) в 1с юникод - символ - 2 байта
20 lodger
 
02.07.18
11:25
(16) вы путаетесь между матчастью и практическим применением методов драйвера.
матчасть можно подтянуть здесь: https://www.commfront.com/pages/3-easy-steps-to-understand-and-control-your-rs232-devices

пример: надо подять строку "ATI1", и как это выглядит в разных счислениях, которые вообще могут быть доступны при работе по COM.
ASCII command example: ATI1 to query Modem manufacturer's information. (Note: are the control codes of Carriage Return and Line Feed).

Convert the command string above to Hexadecimal and it becomes: 41 54 49 31 0D 0A

Convert the command string above to Decimal and it becomes: 065 084 073 049 013 010

Convert the command string above to Octal and it becomes: 101 124 111 061 015 012

Convert the command string above to Binary and it becomes: 01000001 01010100 01001001 00110001 00001101 00001010
21 lodger
 
02.07.18
11:25
при этом, математикой обычно занимается драйвер.
22 polosov
 
02.07.18
11:26
(0)

ТекстДок = Новый ТекстовыйДокумент;
    ТекстДок.УстановитьТекст("моя строка");
    ТекстДок.Записать("C:\1.tmp", "windows-1251");
    Байтики = Новый ДвоичныеДанные ("C:\1.tmp");
    СтрокаСБайтиками = Строка(Байтики);
23 bolobol
 
02.07.18
11:31
(22) Так то же самое и получится, не?
24 Михаил Козлов
 
02.07.18
11:39
(17) Да.
(19) Я знаю, но СтрДлина(Символ(кодСимвола)) возвращает 1, даже если кодСимвола>255.
(18) Младший байт - остаток от деления числа на 256, далее аналогично. Предполагаю, что правильно.
(20) Здесь плаваю: скачали (не помню откуда) TCPClient и пытаемся достучаться до сервера лабораторных весов. Вроде как нужно побайтно посылать.
25 ptiz
 
02.07.18
11:45
(22) Криво, и излишне.
Если надо байты записать в файл, то правильный ответ тут
v8: v8: Побайтовая запись в файл
26 bolobol
 
02.07.18
12:37
(24) Я про порядок байт обратил внимание. А не про вычисление младшего байта спрашивал. И младший байт - должен быть в начале, для архитектуры х86
27 Вафель
 
02.07.18
12:44
(24) тебе нужно массив байт послать? ибо числа передаются по ком-объектам как обычные числа
28 Михаил Козлов
 
02.07.18
13:00
(27) В "инструкции" к серверу весов написано, что перед передачей "команды" (текст) нужно передать длину этого текста в виде целого числа (4 байта). Не знаю, сработает ли в 1С Послать(число в 1С).
(25) Младший в начале? Т.е. число 255 нужно передавать как (255,0,0,0) а не (0,0,0,255)?
29 bolobol
 
02.07.18
13:25
(28) Так оно хранится, младшим в начале, а вот как передавать - этот вопрос меня насторожил. Просто - помнить об этом, и, если что, попробовать и так и так.
30 Михаил Козлов
 
02.07.18
13:35
(29) В "инструкции" порядок BigEndian.
Основная теорема систематики: Новые системы плодят новые проблемы.