Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 2«12
Форум Picbasic.ru » Программирование на ПК » Программирование на Pascal » Delphi и Com-порт (хотелось бы соединить ПИК и ПК через com)
Delphi и Com-порт
hitman Дата: Пн, 14.03.2011, 11:47  |                                                                                                                Сообщение # 16
Группа: Проверенные
Ранг:  Новенький
Сообщений: 14
Репутация: 0   ±
Замечания:   ±
На сайте с 24.05.2010

Статус: Offline

Для начала установите Modbus OPC сервер. Я использую http://www.lectussoft.com/ (это не реклама!). Он в демо версии, но этого хватит чтобы все заработало. Также есть KEPServEx, это тоже ОРС сервер но без поддержки DDE (этот мехенизм нужен для обмена с Office приложениями и т.д.). На сервере создаем переменные, для обмена с микроконтроллером. Прошиваем контроллер, подключаем кабель ну и налаживаем. Листинг с программой и фаил настройки сервера скину позже.
ЯНДЕКС Дата: 14.03.2011
QWERTY Дата: Пн, 22.08.2011, 00:55  |                                                                                                                Сообщение # 17
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 74
Репутация: 0   ±
Замечания:   ±
На сайте с 11.05.2008

Статус: Offline

Можно с примером способ передачи данных от пика в ехель? к примеру: передаем время и температуру(целое число).
Нужно заносить в два столбца таблицы. Как это органихзуется програмно? Как создавать и писать файл Exel автоматически?
terrarus Дата: Пн, 22.08.2011, 10:21  |                                                                                                                Сообщение # 18
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (hitman)
Листинг с программой и фаил настройки сервера скину позже

Ну зачем же позже, давайте сразу сейчас. Очень интересно!


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
passer_by Дата: Сб, 26.05.2012, 19:47  |                                                                                                                Сообщение # 19
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 23.10.2011

Статус: Offline

Доброго времени суток. Может кто подскажет. Не могу разобраться в форматах переменных.
Сделал и в Протеусе и в железе на PIC16F877 измерение температуры. Теперь все это нужно вывести на ПК.
Программист я не важный, с СОМ портом немного разобрался. Написал на Delphi прием по СОМ порту по байтно в массив.
Передаю с PIC_а переменную Float, получаю всего четыре байта. Вроде больше должно быть.... А если это так и есть, то как из них в Delphi собрать переменную? DWord проходит нормально (четыре байта) и из них все просто собрать переменную, а вот с Float ну ни как.
Может с передачей чего не так? Код примерно такой:
Dim Х As Float
Х = -12.34
HSerOut [Х]

Сообщение отредактировал passer_by - Сб, 26.05.2012, 21:00
ADMIN Дата: Вс, 27.05.2012, 05:17  |                                                                                                                Сообщение # 20
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1110
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Я бы рекомендовал писать так:

Dim X As Float
TXSTA = %00100100
RCSTA = %10010000
SPBRG = 25
trisb = 0
main:
X=-12.34
HSerOut [#X,13]
delayms 1000
goto main
passer_by Дата: Вс, 27.05.2012, 15:10  |                                                                                                                Сообщение # 21
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 23.10.2011

Статус: Offline

Спасибо, не знал, что можно использовать модификатор "#". Посмотрел Help там, оказывается, не на прямую, но говорится, что и Dec то же передает переменную как строковую и в конец, как принято, лепят завершающий "0". Получается, что команды HSerOut и Hserin с модификаторами работают со строковыми переменными. А я мучился, с вылавливанием отдельных байт и лепки переменных. Теперь придется всю логику работы переписывать...
ADMIN Дата: Вс, 27.05.2012, 16:27  |                                                                                                                Сообщение # 22
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1110
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Я же прилагал проект как раз по работе с COM-портом через Delphi, там и проект в протоне был.
Ага, сейчас попробовал скачать, ошибка в адресе. Сейчас исправил. Вот ссылка
passer_by Дата: Вс, 27.05.2012, 18:58  |                                                                                                                Сообщение # 23
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 23.10.2011

Статус: Offline

О, большое спасибо! Видел, конечно, ранее ссылку, думал у меня глючит инет. biggrin
Сижу, разбираюсь. Если можно, такой вопрос: чтение СОМ порта производится в синхронном режиме. По событию OnRxChar. Так нормально можно с PIC_ами работать? Байты не теряются? Просто у меня нет опыта работы с такими вещами. Считал, что нужно организовывать чтение в асинхронном режиме.

Сообщение отредактировал passer_by - Вс, 27.05.2012, 19:01
ADMIN Дата: Вс, 03.06.2012, 05:37  |                                                                                                                Сообщение # 24
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1110
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну, а почему нельзя? У меня все работает.
passer_by Дата: Вт, 05.06.2012, 19:21  |                                                                                                                Сообщение # 25
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 23.10.2011

Статус: Offline

Ну, наверное, так. И похоже команды Протона HSerOut и Hserin как бы заточены под синхронный прием/передачу данных. Но, на всякий случай все таки написал прием в асинхронном режиме (и типа для более полного освоение СОМ порта wink ). Вроде все работает. Правда, есть неприятный глюк, время от времени появляющеся. Прием данных с компа микроконтроллером написал по вашему примеру(#16) на основе аппаратного прерывания по USART. Так как сам цикл программы довольно большой, много время уходит на измерение температуры в 4 точках и всяких там еще вычислений. В зависимости от принятого кода идет дальнейшие ветвление программы. По этому сама программа обработки прерываний довольно большая. Причем внутри ее используются подпрограммы вида GoSub=> Метка <=Return. ..... И вот иногда происходит следующее: принятая команда с компа штатно отрабатывается и по выходу из ПП прерывания LCD дисплей весь покрывается нулями, основная программа подвисает. Но команды с компа все таки как то отрабатываются. Все это пока моделирую в Протеусе. Вот и думаю, то ли это прерывание происходит в какой то болезненной точке программы, то ли это Протеус накапливает какую то ошибку исполнения кода. Пробовал ставить запрет прерываний на время выполнения измерений температуры, на некоторые вычисления, все равно врем от времени вылетает этот глюк. Ни кто с таким не сталкивался? Может хотя бы направление поиска подскажете? Или все таки это глюк Протеуса?
(Извиняюсь за много букв)

Сообщение отредактировал passer_by - Вт, 05.06.2012, 19:24
Форум Picbasic.ru » Программирование на ПК » Программирование на Pascal » Delphi и Com-порт (хотелось бы соединить ПИК и ПК через com)
Страница 2 из 2«12
Поиск: