Современная электроника №7/2025
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 18 WWW.CTA.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 7 / 2025 Рис. 2. Окно параметров устройства RS-232 Рис. 3. Главное окно программы макрос Send_RS-232. Код этого макро- са приведён в листинге 2. Листинг 2. Код макроса Send_RS- 232 // Макрос отправки строки симво- лов в порт RS-232 macro_command main() unsigned char tx[256]={0} // Массив символов строк unsigned short n=0 // Счётчик отправленных символов unsigned short i=0 // Переменная цикла FILL(tx[0], 0, 256) // Обнулить массив GetData(tx[0], "Local HMI", LW, 2000, 256) // Читать из памяти символы строк в массив for i=0 to 255 // Проверка мас- сива if tx[i] <> 0 then // Если эле- мент массива не нулевой OUTPORT(tx[i], "RS-232", 1) // Отправить элемент массива в порт RS-232 n=n+1 // Считать отправленные символы end if next i SetData(n, "Local HMI", LW, 3001, 1) // Записать счётчик в память // Beep() // Формировать звуко- вой сигнал окончания отправки end macro_command Для очистки поля приёма применён элемент «Битовый переключатель» с именем «Очистить». Он позволяет вызывать макрос Init, который и про- изводит очистку памяти поля приёма. Последний, третий макрос, который используется в программе, имеет имя Read_RS-232. Он постоянно опраши- вает порт RS-232 с периодичностью 100 мс и помещает принятые символы в буфер памяти приёмника. Код макро- са Read_RS-232 приведён в листинге 3. Листинг 3. Код макроса Read_RS- 232 // Макрос регулярного чтения порта RS-232 macro_command main() unsigned char rx[256]={0} // Массив 8-разрядных символов строк unsigned short rxu[256]={0} // Массив 16-разрядных символов строк unsigned short k=0 // Количество принятых символов unsigned short x=0 // Указатель начала строки в памяти unsigned short i=0 // Переменная цикла FILL(rx[0], 0, 256) // Обну- лить массив 8-разрядных символов строк INPORT2(rx[0], "RS-232", k, 1) // Читать порт RS-232 // TRACE("k=%u", k) // Отладоч- ная информация if k>0 then // Если приняты сим- волы из порта RS-232 SetData(k,"Local HMI", LW, 3002, 1) // Записать количество приня- тых символов в память for i=0 to 255 rxu[i]=rx[i] // Копировать
RkJQdWJsaXNoZXIy MTQ4NjUy