Как передать данные от COM портов приложению?

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Как передать данные от COM портов приложению?

Сообщение 001 »

Здравствуйте!

Я ищу способ строить график U2 = f (U1).
На самом деле I2 = f (U1) для MOSFETов, но это не имеет значения:
Изображение

Что у меня есть: два популярных UT61E мультиметра с подключением RS232 и ПК (Windows, 8 ) с двумя последовательными портами.
Что я могу: я могу написать HTML-приложение GUI с JavaScript для построения графиков (.HTA)
То, что я хочу познать: как передавать данные из UT61E для моего приложения?
Это может быть неправильно использовать .hta, но сейчас я могу писать только так, я любитель.

Где я могу найти руководства для решения подобной задачи? Шаг за шагом?
Спасибо!
Последний раз редактировалось 001 Вт апр 08, 2014 12:14:43, всего редактировалось 1 раз.
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Как передать данные от COM портов приложению?

Сообщение ploop »

Сначала откройте терминальную программу и посмотрите, что за данные он сыплет туда. Если текст - проблем не составит.
Реклама
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

ploop писал(а):Сначала откройте терминальную программу и посмотрите, что за данные он сыплет туда. Если текст - проблем не составит.

Спасибо за быстро ответ!
Но я не имею опыта работы с портами. Как я должен начать?

.txt вида (a;b) я могу хорошо использовать
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Как передать данные от COM портов приложению?

Сообщение ploop »

Я же написал как :)
Какие там в винде терминальные программы есть? Putty знаю - точно работает. Вот запустите её, откройте порт нужный, подключите мультиметр и смотрите, что сыпать будет, попутно подбирая скорость из стандартных.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ks0
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт фев 28, 2013 14:16:10

Re: Как передать данные от COM портов приложению?

Сообщение ks0 »

ploop писал(а):откройте порт нужный, подключите мультиметр и смотрите, что сыпать будет, попутно подбирая скорость из стандартных.

Человек хочет узнать как из html и javascript получить доступ к этим данным. ИМХО, простыми способами НИКАК. Ни javascript, ни, тем более, html доступа к хардварным портам не имеет.
Может можно использовать java аплет, или ставить, например php, из него вроде можно достучаться, или писать какой-нибудь прогой выход с порта в лог-файл и читать его тем-же php... Или программировать на C++, C# и т.п.

PS Сорри, я кажется от жизни отстал... http://strokescribe.com/ru/serial-port- ... lorer.html
Реклама
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

ks0 то, что надо!

Но мои познания в программировании урывочны — html и javascript знаю по веб-вёрстке, пишу в блокноте.
А вот что такое ActiveX только что прочитал в википедии.
С портами опыта совсем нет — что почитать, чтобы представлять как и чего?

Что нужно сделать, чтобы представить данные порта как текстовый файл?
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Как передать данные от COM портов приложению?

Сообщение ploop »

Мля, я сейчас разозлюсь!
Не надо ничего пока писать! Просто посмотрите, что передаёт мультиметр. Дальше решим как быть с вашими явами и хтмл-ями
Аватара пользователя
ks0
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт фев 28, 2013 14:16:10

Re: Как передать данные от COM портов приложению?

Сообщение ks0 »

Сам внимательнее посмотрел на ту страничку, что давал, мало это поможет.
Вообще ActiveX очень устаревшая технология. Элемент ActiveX это по сути программа, написанная на языке программирования общего назначения, типа С++ и т.п. Элемент внедряется в какой-либо документ, например Word файл, лист Excel, страницы HTML (поддерживается только IE!), ну и другие типы документов, и реализует общедоступный интерфейс, используя который из программы контейнера можно с ним взаимодействовать, т.е. вызывать методы и получать каки-либо данные.
Как я уже писал в браузерах кроме IE не поддерживается, т.к. является огромной дырой в безопасности. И поддержка в современных версиях IE тоже под вопросом. Элемент ActiveX должен быть предварительно установлен и зарегистрирован в системе, иначе ничего работать не будет.
Так вот, по ссылке находит просто коммерческий элемент, который надо предварительно купить. Есть ли бесплатный аналог я не знаю, надо искать, погуглите free activex com-port. Если есть там будет и описание интерфейса и прочее.
Короче я сомневаюсь, что вы простой путь выбрали.

А с порта часто идет простой текст, прям как я тут печатаю. Ну с какими-нибудь маркерами начала/конца текста.
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

Спасибо за внимание к теме!
Вот даташит на микросхему, про передачу со стр.21 http://www.frankshospitalworkshop.com/e ... S51922.pdf

The RS232 function will be activated if the RS232 pin is pulled to and asserts at V-.
The serial data sent to SDO pin once every A/D conversion cycle. The data format
complies with JIS 7Bits-transmission code with a baud rate of 19230. The host can use
RS232 interface to read the data. A single data packet includes a start bit (always 0), 7
data bits, an odd parity check bit, and a stop bit (always 1). The high and low voltage
levels correspond to DGND and V- respectively. SDO remains at 1 (high) when it is inactive. Hence the start bit (0) could be used as the triggering signal to begin the
reading process. The following figure shows the data format of a single packet. The
LSB is sent first and the MSB is sent last.

One data block consists of 14 packets, or 140 bits. The following figure shows the
format of a data block. The range packet indicates the full scale range of the meter.
Digit4 through digit0 are just the digits on the LCD panel. The function packet
indicates the measurement mode of the meter. Status, option1~4 give the status of the
meter. CR and LF are delimiters used to separate the blocks.


И дальше там подробно описываются пакеты.
Что с этим можно сделать? Я тут узнал, что порт нужно "открывать" и т.п. Как это и с чем это едят?
Аватара пользователя
ks0
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт фев 28, 2013 14:16:10

Re: Как передать данные от COM портов приложению?

Сообщение ks0 »

001 писал(а):Я тут узнал, что порт нужно "открывать" и т.п. Как это и с чем это едят?

Будет найден ActiveX - будет о чем говорить. Взаимодействие с портом это задача для другого языка программирования, никак не для JavaScript. В JavaScript никаких портов нет. И доступа к железу тоже нет.
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

ок. Может тогда стоит сменить язык?
Что для этого лучше подойдёт?

Или сообразить "костыль", пишущий из порта в файл, а уж имея два столбца чисел я что угодно наворочу и на javascript.
Весь вопрос сводится к получению этих чисел…
Или пошаговому изучению иного языка и общепринятого метода общения с портом.
Вариант 3 — при наличии тут знающих людей, могу предложить написание этого костыля за деньги с разъяснением мне что к чему.


P.S. поискав, нашёл это https://github.com/billhsu/jUART
Аватара пользователя
ks0
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт фев 28, 2013 14:16:10

Re: Как передать данные от COM портов приложению?

Сообщение ks0 »

001 писал(а):ок. Может тогда стоит сменить язык?
Что для этого лучше подойдёт?

Если вы на JavaScript программировали, то любой язык с Си-подобным синтаксисом, С# или Java, например. Для С# надо будет устанавливать .NET, для Java - Java машину. Среды разработки бесплатные. Ну и само собой любой С++. Однако все они сильно сложнее чем JavaScript.

001 писал(а):Или сообразить "костыль", пишущий из порта в файл, а уж имея два столбца чисел я что угодно наворочу и на javascript.

Костыль тоже вариант. А файл прочитать сможете? Из JavaScript они, вроде, тоже не читаются, может для .HTA эти ограничения отсутствуют.
Тогда надо, как вам уже советовали, посмотреть таки вывод с мультиметра какой-либо прогой, например http://www.putty.org/
А потом найти прогу, а может и эта может, для ведения лога в файл.

001 писал(а):Или пошаговому изучению иного языка и общепринятого метода общения с портом.

Чтения из порта задача с одной стороны простая, с другой требует представления о многопоточности, в JS такого понятия нет. Чтение должно осуществляться непрерывно в отдельном от UI потоке, с занесением данных в буфер. Может быть в современных языках типа C# все реализуется просто, но я только на VC++ лет 10 назад много кодил, сейчас лучше уже новые языки использовать.
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

Спасибо за интерес к теме!
ks0 писал(а):надо, как вам уже советовали, посмотреть таки вывод с мультиметра

В даташите на микросхему (пост #9) подробно описывается всё что посылает мультиметр в порт.
А вот что с этим делать (т.е. как в компьютере этим воспользоваться) я не знаю.

Более того:
Существует родной софт именно этого мультиметра ( http://www.uni-trend.com/Web%20site/DMM ... 0v2.00.exe ) и альтернативный (но функции не те) http://www.eevblog.com/forum/projects/u ... e-project/ и ещё что-то http://www-user.tu-chemnitz.de/~heha/hs/UNI-T/
но как в них происходит взаимодействие с портом? Ведь они как-то пишут данные в файл? Как в этом разобраться и вытащить нужный кусок?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Как передать данные от COM портов приложению?

Сообщение Мурик »

Зачем вообще ActiveX для доступа к порту?

ТС, могу поредкмендовать изучить какой-то простой ЯП, нативно поддерживающий работу с COM портом (чтобы проще было для новичка). Например.
Или в крайнем случае, dll облегчающую работу с портом.
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: Как передать данные от COM портов приложению?

Сообщение kalobyte »

тематические ответы только в форуме, в приват не пишите
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Как передать данные от COM портов приложению?

Сообщение ploop »

А вообще, вам срочно надо? А то я подумываю приложение на Qt накатать, там делов-то на вечер чисто показания вывести, долго только интерфейс и все красивости разрисовывать. Кроссплатформенное, разумеется.
Правда у меня UT71C, но шлют они, думаю, одинаково.
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

ploop, срочность может компенсироваться ценой вопроса :beer:

По ссылкам выше в общем-то все наработки по софту для этих мультиметров.
Мне нужно решить конкретную задачу и, главное, понять, как использовать сигнал от железки через ком-порт.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Как передать данные от COM портов приложению?

Сообщение ploop »

001 писал(а):рочность может компенсироваться ценой вопроса

Не может, к сожалению... со временем туго.
Но думаю на днях начну.
001
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 27, 2014 15:30:36

Re: Как передать данные от COM портов приложению?

Сообщение 001 »

тогда прошу условия в ЛС.
Кстати, у UNI-T под каждую модель свои заморочки (передаётся ведь содержимое дисплея, а они разные — см первую и вторую ссылки)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Как передать данные от COM портов приложению?

Сообщение ploop »

Простите, вы не поняли: я не делаю это для вас. Я буду делать это для себя. Все исходники, разумеется, в опенсорсе будут.
Кстати, у UNI-T под каждую модель свои заморочки (передаётся ведь содержимое дисплея, а они разные — см первую и вторую ссылки)

Ну и что, можно поддержку нескольких моделей запилить. Главное законнектиться и принять данные, а уж там твори что хочешь...
Ответить

Вернуться в «Интеграция с ПК»