Цель работы: Изучить технологии обмена данными через COM порт при помощи средств ActiveX
Задача работы: Построение канала связи “Excel – объект” для целей управления.
Приборы и принадлежности: Два персональных компьютера, Microsoft Excel, COM Port Toolkit, элемент ActiveX MSCOMM32.OCX , нуль-модемный кабель, адаптер MOXA UPort 1150, Модуль дискретного ввода-вывода ОВЕН МК110, датчик температуры с частотным выходом MAX6577.
ВВЕДЕНИЕ
Все мы любим Excel за скорость и простоту отчетов. Использование Excel для прямого управления объектами позволяет исключить затраты связанные с использованием посредников, например, ОРС серверов и, при этом, максимально упростить накопление и обработку данных. В этой работе даны примеры “выхода” Excel во внешнюю среду через СОМ порт, а также показана релейная система термостатирования на базе модуля дискретного ввода-вывода ОВЕН МК110, непосредственно управляемая из Excel.
ОБЩИЕ СВЕДЕНИЯ
COM порт
После́довательный порт (англ. Serial port, COM-порт, англ. Communications port) — сленговое название интерфейса стандарта RS-232, которым массово оснащались персональные компьютеры. Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами, а также с приборами систем безопасности объектов.
С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель».
Достоинством обмена данными через COM порт является крайняя простота оборудования. Недостатком является низкая скорость, крупные размеры разъемов, а также зачастую высокие требования к времени отклика ОС и драйвера и высокое количество прерываний (одно на половину аппаратной очереди, т.е. 8 байт).
Связь Excel с COM портом осуществляется через управляющий элемент ActiveX — расширенной технологии OLE, призванной существенно увеличить функциональные возможности компьютера.
ActiveX
ActiveX — фреймворк для определения программных компонентов, пригодных к использованию из программ, написанных на разных языках программирования. Программное обеспечение может собираться из одного или более таких компонентов, чтобы использовать их функционал.
Впервые эта технология была внедрена в 1996 году компанией Microsoft как развитие технологий Component Object Model (COM) и Object Linking and Embedding (OLE) и теперь она широко используется в операционных системах семейства Microsoft Windows, хотя сама технология и не привязана к операционной системе.
Множество приложений для Microsoft Windows, включая приложения самой компании Microsoft, такие, как Internet Explorer, Microsoft Office, Microsoft Visual Studio, Windows Media Player, используют управляющие элементы ActiveX, чтобы реализовать набор функциональных возможностей и в дополнение инкапсулировать их собственный функционал в управляющие элементы ActiveX, чтобы предоставить возможность встраивать их в другие приложения.
Элемент ActiveX: MSCOMM32.OCX
Элемент управления Microsoft Comm Control 6.0 обеспечивает последовательную передачу и прием данных через COM порт. Управляемая событиями связь – мощный метод обработки событий при взаимодействии с последовательным портом.
Во многих ситуациях необходимо получать извещение в тот момент, когда происходит событие, такое как ‘прибытие’ символа или когда происходит изменение в Carrier Detect (CD) или Request To Send (RTS-линии). Для перехвата и обработки этих событий используется событие OnComm. Событие OnComm также обнаруживает и обрабатывает ошибки связи. Каждая управляемая коммуникационная связь использует один последовательный порт. Если необходимо обратиться к более чем одному COM – порту необходимо использовать больше чем одно средство управления связи.
Ряд свойств элемента управления Microsoft Comm Control 6.0 представлен в следующей таблице:
Синтаксис свойства CommPort:
MSComm.CommPort [= portNumber], portNumber можно устанавливать от 1 до 99 (по умолчанию portNumber устанавливается равным 1). Если номера COM-порта не существует MicrosoftCommControl сгенерирует ошибку 68. Свойство CommPort должно устанавливаться перед открытием COM-порта. Тип данных – Integer.
Синтаксис свойства Settings
MSComm.Settings[ = paramString], paramString состоит из четырех установок и имеет следующий формат – «BBBB, P, D, S» , где:
BBBB — скорость в бодах
P — контроль по четности
D — число битов данных
S — число стоповых битов
Примечание: MSCOMM32.OCX можно найти и скачать на официальном сайте компании Microsoft
/1fbd8927a9f57654d204624cd65bf386/ru-ru/default.aspx.
ПРИМЕРЫ ПОЛУЧЕНИЯ ПРОВЕРЕННЫХ РЕЗУЛЬТАТОВ И ВАРИАНТЫ ДЛЯ САМОКОНТРОЛЯ
Задание 1. Настройка соединения двух компьютеров, через COM порт.
1. Соедините два компьютера по RS-232 нуль модемным кабелем или, например, через MOXA UPort 1150 адаптер как показано ниже. В последнем случае необходимо установить драйвер адаптера и настроить его на работу по стандарту RS-232.
2. Запустите программы обмена данными через COM порт, например, программы COM Port Toolkit.
3. Передавая и принимая данные убедитесь, что линия последовательной передачи данных работает
Номер COM порта используемого программой устанавливается через меню Toolkit > Options > COM port configuration > Port. Показанное окно передачи сообщений Send message открывается через меню Toolkit > send. Передаваемые данные отображаются в левом окне, а принимаемые данные — в правом окне. Коды отображаются побайтно в 16-ричном формате. Так, шестнадцатиричный код 36 имеет десятеричный эквивалент 54 (как 3*16+6), это код цифры 6.
Задание 2. Обмен данными из среды Excel через COM порт.
1. Поместите элемент (MSCOMM32.OCX) в папку C:WindowsSystem32
Примечание: Скачать MicrosoftCommControl 6.0 можно с официального сайта компании Microsoft
http://www.microsoft.com/ru-ru/default.aspx.
2. Зарегистрируйте MSCOMM32.OCX в командной строке (cmd) командой regsvr32 MSCOMM32.OCX.
3. Подключите MSCOMM32.OCX к Microsoft Excel, для этого откройте вкладку Excel > Tools->References через последовательность Excel menu > Tools > Macro > Visual Basic Editor > или () и далее > Microsoft Visual Basic menu > Tools > References, в открывшемся окне выберите Browse… и, затем, элемент MSCOMM32.OCX из папки C:WindowsSystem32.
Рис. 1. Окно Referencesпосле с элементом Microsoft Comm Control 6.0 (SP6) (MSCOMM32.OCX).
4. Вставьте форму ()
Рис. 2. Вызов формы.
5. Добавьте в Toolbox элемент MSCOMM32.OCX. Он выглядит как желтый телефон.
Рис. 3. Вставка MSCOMM32.OCX в Toolbox.
6. Перетащите “телефон” из Toolbox на на форму и оставьте его где-нибудь в углу, при работе программы этот элемент отображаться не будет.
7. Добавьте в форму два окна и одну кнопку, одно окно — для ввода передаваемых данных, а второе — для вывода принимаемых данных, редактируя текст кнопки дайте ей название.
Рис. 4. Заполнение формы.
8. Для кнопки формы добавьте код приведённый ниже (для добавления кода, достаточно в редакторе дважды щелкнуть на кнопку и откроется окно для ввода кода):
Private Sub CommandButton1_Click()
MSComm1.CommPort = 1
MSComm1.Settings = «9600,N,8,1»
MSComm1.InputLen = 0
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»
Exit Sub
End If
MSComm1.Output = TextBox1.Text
Do
Dummy = DoEvents()
Loop Until MSComm1.InBufferCount >= 8
TextBox2.Text = MSComm1.Input
MSComm1.PortOpen = False
EndSub
Этот код запускается нажатием кнопки. Он устанавливает связь с COM портом пересылает данные верхнего окна формы и дождавшись восьми байт из COM порта отображает их в нижнем окне.
Рис. 5. Форма, и ее код. Функция CommandButton1_Click(), означает, что код будет выполнен при нажатии на кнопку.
9. Понизьте уровень защиты Excel файла перед запуском макрос:
Рис. 6. Снятие защиты запуска макрос.
Примечание. Выберите Enable Macros (разрешить макрос) если система спросит об этом при при запуске программы Excel с макрос:
10. Соедините два компьютера кабелем для обмена данными через COM порты, если такое соединение не установлено.
11. На втором компьютере (по отношению к компьютеру с Excel формой) запустите программу COM Port Toolkit.
12. На первом компьютере запустите макрос кнопкой Run
.
13. Проверьте работоспособность передачи данных от Excel к COM Port Toolkit. Для этого введите данные в верхнее окно формы и нажмите на кнопку формы. COM Port Toolkit должен получить эти данные.
Рис. 7. Вид формы и Toolkit после передачи данных.
Примечание: Если появится сообщение о не возможности работать с COM портом выполните следующее.
• закройте окно предупреждения и форму.
• Узнайте номер подключенного Com порта компьютера: Start > My Computer> Properties > Hardware > Device Manager >
• Укажите на форму UserForm1
и раскройте ее код клавишей F7 или через меню Microsoft Visual Basic > View > Code.
• Замените номер порта в коде формы, например, MSComm1.CommPort = 2
Сообщение об ошибке COM порта было сформировано следующими строками Macros.
If Err Then
MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»
14. Проверьте передачу данных в обратном направлении от Toolkit в Excel форму. Для этого запустите форму
введите данные в Toolkit, нажмите на клавишу send и убедитесь, что Excel форма приняла их после нажатия кнопки. Внимание: принятые данные в нижнем окне формы появятся только тогда когда их количество достигнет уровня указанноего в коде: Loop Until MSComm1.InBufferCount >= 8
Задание 3. Циклический обмен данными соединения Excel – Toolkit.
1. Доработайте код кнопки формы как показано ниже.
Private Sub CommandButton1_Click()
MSComm1.CommPort = 2
MSComm1.Settings = «9600,N,8,1»
MSComm1.InputLen = 0
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»
Exit Sub
End If
For i = 1 To 4
MSComm1.Output = TextBox1.Text
Do
Dummy = DoEvents()
Loop Until MSComm1.InBufferCount >= 2
TextBox2.Text = MSComm1.Input
Next i
MSComm1.PortOpen = False
End Sub
2. Проверьте, что после нажатия клавиши формы программа выполняет четыре цикла. На каждом цикле сначала отсылаются данные вверхнего окна, если, конечно, они там имеются, затем Excel ждет в малом цикле поступление двух байт, приняв байты, отображает их в нижнем окне формы и, затем, начиная новый цикл передачей данных верхнего окна формы в COM порт.
Задание 4. Построение релейной системы термостатирования на базе устройства ввода/вывода данных МК110 с накоплением данных и управлением из Excel .
1. Соберите систему как показано на рисунке ниже.
Рис. 8. Схема соединений системы термостатирования на базе модуля МК110.
Примечание:
• Подключение системы к компьютеру через адаптер UPort 1150 показано на рисунке задания 1.
• Датчик темепатуры установите в зоне нагревателя – лампы.
• Modbus команды приема/передачи данных модуля MK110:
• В соответствии с modbus протоколом устройство МК110 дает ответ на каждую принятую команду в виде последовательности байт.
• Объект COM порта разделяет нулями байты ответа устройства МК110 которые считываются из приемного буфера СОМ порта. Это необходимо учитывать при выделении нужной информации из ответа устройства.
2. Драйвер USB адаптера МОХА UPort 1150 настройте на работу по протоколу RS-485 2W.
3. Запустите Excel и постройте форму как показано в задании 2 включив в нее следующие объекты Toolbox: “телефон”, прокрутку (Scrollbar) и кнопку (CommandButton).
Рис. 9. Пример рабочей формы.
4. Заполните шаблоны объектов формы следующими VBA кодами.
Код кнопки Run:
Private Declare Sub Sleep Lib «kernel32» (ByVal dwMilliseconds As Long) ‘необходима для задания задержки
Private Sub CommandButton1_Click()
Dim MyString As String
Dim b() As Byte
For i = 1 To 20 ‘ начало цикла термостатирования
‘ Установка связи c СОМ портом
MSComm1.CommPort = 2 ‘ номер СОМ порта
MSComm1.Settings = «9600,N,8,1» ‘ скорость передачи СОМ порта и другие параметры
MSComm1.InputLen = 0
On Error Resume Next
MSComm1.PortOpen = True
If Err Then ‘ выводимое сообщение об ошибке открытия СОМ порта:
MsgBox «Com» & MSComm1.CommPort & «: not available. Change CommPort property to another port.»
Exit Sub
End If
b = MSComm1.Input ‘ считывание ответов МК110 на команды “Counter Reset” и “Counter
‘ Read” из входного буфера COM порта (байты ответов разделен нулями),
‘ вычисление значения температуры датчика в градусах С и запись температуры в соответствующую
‘ ячейку таблицы Excel:
Sheet1.Cells(i + 6, 2).Value = (b(UBound(b) — 7) * 256 + b(UBound(b) — 5)) / 1.047 — 273.15
‘ сравнение температуры датчика с заданной температурой хранимой в ячейке В4: Sheet1.Cells(4, 2)
If Sheet1.Cells(i + 6, 2).Value > Sheet1.Cells(4, 2).Value Then
‘ Lamp OFF ‘ выключение лампы по протоколу modbus::
MSComm1.Output = Chr$(16) + Chr$(16) + Chr$(
+ Chr$(1) + Chr$(
+ Chr$(1) + Chr$(2) + Chr$(
+ Chr$(
+ Chr$(103) + Chr$(209)
Sheet1.Cells(i + 6, 3) = «Off» ‘ запись “Off” в соответствующую ячейку Excel
Else
‘ Lamp ON OFF ‘ включение лампы по протоколу modbus::
MSComm1.Output = Chr$(16) + Chr$(16) + Chr$(
+ Chr$(1) + Chr$(
+ Chr$(1) + Chr$(2) + Chr$(3) + Chr$(132) + Chr$(103) + Chr$(66)
Sheet1.Cells(i + 6, 3) = «On» » ‘ запись “On” в соответствующую ячейку Excel
End If
MSComm1.PortOpen = False ‘ отсоединение от COM порта
Next I ‘‘ окончание цикла
End Sub
Код прокрутки:
Private Sub ScrollBar1_Change()
‘запись значения прокрутки как заданной температуры в ячейку B4 Excel
Sheet1.Cells(4, 2).Value = ScrollBar1.Value
End Sub
5. Подготовьте заголовки таблицы:
6. Запустите макрос формы.
7. С помощью прокрутки установите заданную температуру отображаемую в ячейке B4.
8. Запустите термостатирование нажатием кнопки Run формы
9. Сравните собственный процесс термостатирования с результатом, представленным ниже.
Пример результатов работы системы термостатирования управляемой из Excel через COM порт. Excel не только напрямую управляет процессом поддержания заданной температуры (здесь 44С) используя макрос, но и накапливает действительные значения температуры (ячейки B7:B26) и состояния нагревателя (ячейки С7:C26).
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Какие средства необходимы для обеспечения прямого управления из Excel?
2. От чего зависит частота контура управления через СОМ порт?
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Модули дискретного ввода/вывода MK110-220.8Д(ДН).4Р, MK110-24.8Д(ДН).4Р, MK110-224.8Д(ДН).4Р. Руководство по эксплуатации
2. Гульванский В.В., Забродин О.В., Кудряшов К.В. Отчет по ЛР №9 на тему: «Обмен данными черезcom-порт из Excel»
MSCOMM32.OCX прилагается:
Вложение | Размер |
---|---|
08.04_COM port control in Excel.zip | 52.16 КБ |
Знаток Регистрация: 13.07.2007 Сообщений: 652 Репутация: 117
|
Здравствуйте,уважаемые форумчане. |
|
Banned Регистрация: 21.04.2012 Адрес: южнее Дуная Сообщений: 4,318 Репутация: 416
|
Цитата:
Сообщение от Sergey57 …. Деньги небольшие и последнее является определяющим… заказчик очень своеобразен….Куплю ему, а потом и вопли с выносом мозга……Вопрос кто виноват понятно, что делать? Задач у меня немеряно ….чтобы принять решение. Нуууу, раз дело такое, то отправьте Вашего мосью Клиента в Ямальскую тундру….. А если Вам задачка по душе, то займитесь ею как хобби, имхо… А если Ваш заказчик аппетитная Дамма, то озвучте ее телефон !!!!… Созвонимся, обсъдим на тощак !!!….. ПП: что за массив данних нужно передать?… |
|
Приглашаем всех желающих принять участие в вебинаре, посвященном LED-драйверам. На мероприятии мы рассмотрим существующую и новую продукцию из линейки поставок Компэл для интерьерного, архитектурно-декоративного, наружного и промышленного освещения, а также специальные драйверы с повышенной выходной мощностью для освещения площадей, стадионов и теплиц. Будут представлены LED-драйверы производителей MEAN WELL, MOSO, Snappy, а также драйверы для аварийного освещения (ISSATA). Рассмотрим их особенности и преимущества; узнаем, какая новая продукция появилась у MEAN WELL за прошедший год, и чего нам ждать в будущем. |
Новичок Регистрация: 01.08.2012 Сообщений: 6 Репутация: 10
|
Цитата:
Сообщение от Sergey57 Пользовался 1. напишите как Вам нужно работать с com портом: в порт что-то валится от железки; нужно захватывать данные; нужно работать одновременно с несколькими com |
|
Знаток
Регистрация: 12.11.2010 Адрес: Владимир Сообщений: 229 Репутация: 101
|
Помню давно тоже интересовался подобной задачей. Только необходимость отпала, так и не реализовал. И помню что гугль вполне может помочь в Вашем вопросе. |
|
Новичок Регистрация: 04.11.2008 Сообщений: 438 Репутация: 37
|
Самым простым путем, ИМХО, который я уже реализовывал не один раз, будет запись всех принимаемых данных в текстовом формате ( с небольшой ообработкой) в файл VB-скрипта. По окончанию приема всех данных этот файл запускается на выполнение через wscript.exe и вуа-ля, таблица готова. Примеры подобных скриптов можно без труда нарыть в Интернете или могу скинуть образец. Если надо — пишите |
|
Знаток Регистрация: 13.07.2007 Сообщений: 652 Репутация: 117
|
Спасибо за исчерпывающие ответы xmailer и AkaU. В прошлый раз это всё сам точил и фрезеровал на своём ЧПУ , а в этот раз напечатаю на 3д принтере. Будет регулярная строка :начало строки, № по порядку(3р),№ строки (3р), |
|
Новичок Регистрация: 01.08.2012 Сообщений: 6 Репутация: 10
|
Цитата:
Сообщение от Sergey57 Будет регулярная строка :начало строки, № по порядку(3р),№ строки (3р), Написал приложение по логированию данных по указанному формату из com порта в указанный excel файл. Для эмуляции поступление данных в com порт по формату написали нехитрый arduino скетч: Код: int npp = 1; int nstr = 10; char buffer[18]; void setup() { Serial.begin(9600); } void loop() { /*№ по порядку(3р),№ строки (3р), Угол 1 (4р),Угол 2 (4р),Дальность (4р)*/ sprintf(buffer,"%3d%3d%4d%4d%4d",npp,nstr,random(0,360),random(0,360),random(0,9999)); Serial.println(buffer); delay(5000); if(npp > 32000){ npp=1; } if(nstr > 32000){ nstr=10; } nstr++; npp++; } Приложение можно скачать здесь |
|
Новичок Регистрация: 01.08.2012 Сообщений: 6 Репутация: 10
|
Sergey57 если приложение Вам подойдет, может правки какие, найдите пож-та для меня время. |
|
Знаток Регистрация: 13.07.2007 Сообщений: 652 Репутация: 117
|
Спасибо за заботу и разъяснения. Цитата: Будет регулярная строка :начало строки, № по порядку(3р),№ строки (3р), И напоследок , чтобы прояснить ситуацию. Нанимают киллера взорвать квартиру. |
|
Новичок Регистрация: 01.08.2012 Сообщений: 6 Репутация: 10
|
Цитата:
Сообщение от Sergey57 Занимаюсь механикой. Данную программу я сделал быстро, поскольку работаю прикладным программистом, если нужно отдам исходники. У меня период перехода с avr на smt32, и свой живой проект. Насколько я понял — Вы профессионально занимаетесь микроэлектроникой, возможно Вы могли бы ответить на несколько конкретных вопросов и не особо важно на какой архитектуре. В данном случае — деньги меня не интересуют, нужен спец по микроэлектронике. Мой скайп gserg51 или свой скажите |
|
Что это за АСУ такая, которая в качестве источника данных использует Excel-таблицу? Она точна Автоматическая Система Управления? Или может это все-же утилита, выполняющая анализ и постобработку данных?
В любом случае «простых» вариантов 2:
1) передавать с девайса на ПК CSV — файл. Выполнить это можно практически любым терминалом, включив логгирование в файл. CSV — Comma Separated Values, обычный текстовый файл, где каждая строка представляет собой что-то такое «x1 , x2 , x3 , x4n». Запятые, а на деле практически любой специальный символ, не встречающийся в xn, разделяет отдельные значения, образуя эдакие «колонки». Полученный текстовый файл запросто импортируется в Excel (как именно — зависит от версии), а уже оттуда экспортируется в «фирменный» формат;
2) курим VBA, он-же Visual Basic for Applicatoins, и встраиваем чтение последовательного порта прямо в Excel-файл. И будет там буквально кнопка, скажем, «Пуск», которая будет читать результаты из порта и сразу раскидывать по ячейкам;
Ну а варианты «по-круче» зависят от времени, квалификации и ресурсов.
Изменено 11 октября, 2019 пользователем El-Shang
Download Article
Download Article
This tutorial explains how to establish a bidirectional real-time communication between Microsoft Excel and your RS232 COM Port devices like a Scale, Proximity reader, Barcode reader, temperature sensor, Caliper, Micrometer, Gage. This solution uses the software «Bill Redirect» with the «Excel Plugin» to easily connect your peripheral and receive and send the data. The communication between Microsoft Excel and your device is made via a direct DDE link. An Excel Macro can be called after each data received from your device to validate the data received. This solution explains how you can send a command via VBA to your device and totally control your device. No programming or additional hardware required!
-
1
-
2
Download and install the Excel plugin. This is at http://www.billproduction.com plugin_DDE.zip. This plugin software is used to establish the communication with Microsoft Excel via DDE
Advertisement
-
1
Start the software: Bill Redirect. The default password to edit the configuration is: www.billproduction.com.
-
2
Disable all section except the Serial Port and Plugin.
- In section «Serial Port» set the switch to: On.
- In section «Plugin» set the switch to: On.
Advertisement
-
1
Click on: Serial Port Configuration.
-
2
Enter the Serial Port Number where your device is connected.
-
If the background color is green, it means that the serial port works and the port is open.
- Select the Bauds, Parity and Databits configured in your device.
-
If the background color is green, it means that the serial port works and the port is open.
-
3
Click on button: Save Configuration
- If you use a RS-232 to USB converter to connect your device on the computer, it is important to use a converter with FTDI chipset for a good stability !
Advertisement
-
1
Start: Microsoft Excel
. This solution is compatible with all Excel version and language ! -
2
Create a in Excel a: new blank document.
-
3
Make sure that the sheet name is: Sheet1.
-
4
Save your Excel document to: C:BillProduction.CFGMyFile.xlsx.
Advertisement
-
1
Start the Excel Plugin
. The default password to edit the configuration is: www.billproduction.com.- Important: The TCP Connection Status must indicate: Connect. If it is not to Connect then make sure that Bill Redirect Software is open.
- In trial mode you must restart the software Bill Redirect after each 15 minutes to continue your test.»
-
2
In the Excel Plugin click on the folder icon and select your Excel File created at step before.
- If all is okay, the DDE Connection Status indicate: Connect.
- At this point the communication is establish with your Device via Excel. The data received from your device is sent in Excel.
-
3
Test your communication with Excel. Use the button: Test DDE. To see what your device sends or receive, use the section Debugger in Bill Redirect.
Advertisement
-
1
Consider example #1:’ Call an Excel Macro after each data received:
- Simply enter your macro name in the field «Run macro:«
- To test the call of your macro use the button at right.
-
2
Consider example #2:’ Send a command to your device via VBA:
-
3
To send data command from Excel to your device use this VBA Excel source code:
- ChannelNumber = DDEInitiate(«BPEXCEL», «BPEXCEL»)
- DDEExecute ChannelNumber, «{TX_SERIAL[Hello Word !{ASCII:13}]}»
- DDETerminate ChannelNumber
- Replace the command Hello Word !{ASCII:13} by the command you want.
- Supplemental documentation.
- Excel Plugin full manual with all explanation: http://www.billproduction.com
- /Bill_DDE_over_Ethernet.pdf.
- Bill Redirect Software full manual with all command:
http://www.billproduction.com - /Bill_Redirect_Manual.pdf.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Thanks for submitting a tip for review!
References
About This Article
Thanks to all authors for creating a page that has been read 31,791 times.
Is this article up to date?
Сегодняшняя статья будет небольшим продолжением старой наработки – термометра, который измеряет температуру в помещении и на улице. На примере температуры я хочу показать, как можно выводить данные не только на индикаторах и дисплеях, но и на мониторе компьютера. Чтобы вывод данных был интересней, можно построить график или диаграмму.
В среде разработки arduino ide уже есть готовый интерфейс, для приема данных с микроконтроллера – монитор порта. Чтобы передать данные с МК достаточно просто вывести информацию с помощью набора функций Serial. Они служат для передачи данных через порты ввода/вывода RX и TX или USB. Подобно монитору порта из среды arduino ide, получать данные можно и с помощью своих десктопных программ или скриптов, которые будут читать данные с com-портов.
Но в этой статье мы не будем писать обработку портов, а воспользуемся уже готовым макросом для excel – PLX DAQ, который умеет считывать данные с порта и выводить их в ячейки таблицы. Скачать дополнение можно тут: скачать. А почитать подробнее о макросе можно тут: ссылка.
Настройка PLX DAQ для excel
После установки дополнения PLX DAQ, на рабочем столе появится ярлык «PLX-DAQ Spreadsheet». Нужно его запустить, тогда откроется лист excel с уже запущенным макросом. Для связи с arduino достаточно указать, какой нужно слушать com-порт, и на какой скорости происходит передача данных. Скорость передачи должна соответствовать той, что указана в arduino: Serial.begin(9600);
После настройки порта и скорости передачи данных нужно нажать кнопку «connect» и сразу же начнется получение и вывод данных из arduino. Пример работы можно посмотреть на скриншоте ниже.
Что использовалось в проекте:
- Arduino (я использовал arduino uno, но можно любую другую). Покупал тут: arduino uno
Тестовый скетч для передачи данных в Excel из arduino
Ниже приведен скетч с подробными комментариями, а также его можно скачать себе на компьютер: скачать.
int row_excel = 0; // количество строк int test = 123; // тестовая переменная, которая будет передана excel int test_2 = 456; // вторая тестовая переменная, которая будет передана excel void setup(){ Serial.begin(9600); // скорость передачи данных Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Test 1, Test 2, Num Rows"); // заголовки столбцов } void loop(){ row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени Serial.print(test); Serial.print(","); Serial.print(test_2); Serial.print(","); Serial.println(row_excel); // если строк больше 50, то начинаем заполнять строки по новой if (row_excel > 50){ row_excel = 0; Serial.println("ROW,SET,2"); } delay(1000); // задержка }
Послесловие
И в заключение приведу короткий ролик, который показывает, как в экселе выводятся данные, полученные от термометра. И на их основе строится график с двумя переменными – для комнатной и уличной температуры:
Юрий_Нд Пользователь Сообщений: 35 |
Доброго дня Всем. |
Добрый день! |
|
Юрий_Нд Пользователь Сообщений: 35 |
#3 30.09.2021 09:42:10
Да без проблем. Изменено: Юрий_Нд — 30.09.2021 09:44:05 |
||
vikttur Пользователь Сообщений: 47199 |
#4 30.09.2021 10:02:34
Это место для подписи? |
||
Юрий_Нд Пользователь Сообщений: 35 |
… «ну типа таво.», привычка. |
БМВ Модератор Сообщений: 21380 Excel 2013, 2016 |
#6 30.09.2021 10:11:18
да можно. По вопросам из тем форума, личку не читаю. |
||
Итак у меня стоит задача вот в чем. Есть счетчики электроэнергии они собирают данные по электричеству с оборудования. Необходимо создать файл куда будут собираться все данные по счетчикам. Сразу скажу что SCADA системы нам не по карману. Считчики подключаются к компьютеру по RS485, протокол обмена данными есть в печатаном виде. Да и еще счетчики умеют работать по MODBUSу. Поэтому может есть у кого опыт организации обмена? |
|
Юрий_Нд Пользователь Сообщений: 35 |
#8 30.09.2021 10:20:08
… Excel «знает», что такое протокол UART? БМВ, возможно эта тема «… стара как мир»? |
||
Юрий_Нд Пользователь Сообщений: 35 |
#10 30.09.2021 10:42:15
Всё очень просто. |
||
юнат Пользователь Сообщений: 22 |
#11 19.10.2022 12:52:41 Помогите читать данные с ком порта.
Как вывести данные в ексель? Изменено: юнат — 20.10.2022 08:43:49 |
||
юнат Пользователь Сообщений: 22 |
К порту подключен считыватель рфид карт. Проблема ещё в том, что номер может повторяться — это если делать опрос порта каждую секунду и сравнивать номера карт для передачи в ексель. Я пока вообще не понимаю как это всё можно организовать, поэтому сразу не могу дать всех необходимых вводных данных. |
БМВ Модератор Сообщений: 21380 Excel 2013, 2016 |
юнат, свои сообщения можно корректировать и дополнять. Вернитесь и исправьте оформление кода макроса. По вопросам из тем форума, личку не читаю. |
юнат Пользователь Сообщений: 22 |
Здравствуйте все и всегда! |
копите деньги Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Игорь Федорович Пользователь Сообщений: 23 |
#16 29.10.2022 20:56:51
Случайно наткнулся на этот топик. Если еще актуально… Есть идея навеянная статьями 1. Читаем COM при помощи питона https://stackoverflow.com/questions/44056846/how-to-read-and-write-from-a-com-port-using-pyserial 2.Отображаем при помощи excel как здесь https://www.someka.net/blog/real-time-stock-quotes-using-python/ 3. Еще способ подружить Excel с Python здесь https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=5&TID=141023&… = |
||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#17 29.10.2022 21:18:16
идеи -это отлично, а решение есть? которое можно вставить в файл и получить желаемый результат? Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Игорь Федорович Пользователь Сообщений: 23 |
#18 30.10.2022 10:00:06
Например в ячейке A1 будет инфо из COM4 процедура excel
модуль питона
Изменено: Игорь Федорович — 30.10.2022 10:08:53 |
||||||
юнат Пользователь Сообщений: 22 |
#19 30.10.2022 18:54:59 Игорь Федорович, спасибо за идею, все советы актуальны. |