Страница 1 из 3

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

Добавлено: Вт апр 08, 2014 11:44:52
001
Здравствуйте!

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

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

Где я могу найти руководства для решения подобной задачи? Шаг за шагом?
Спасибо!

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

Добавлено: Вт апр 08, 2014 12:09:04
ploop
Сначала откройте терминальную программу и посмотрите, что за данные он сыплет туда. Если текст - проблем не составит.

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

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

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

.txt вида (a;b) я могу хорошо использовать

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

Добавлено: Вт апр 08, 2014 12:21:12
ploop
Я же написал как :)
Какие там в винде терминальные программы есть? Putty знаю - точно работает. Вот запустите её, откройте порт нужный, подключите мультиметр и смотрите, что сыпать будет, попутно подбирая скорость из стандартных.

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

Добавлено: Вт апр 08, 2014 15:45:48
ks0
ploop писал(а):откройте порт нужный, подключите мультиметр и смотрите, что сыпать будет, попутно подбирая скорость из стандартных.

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

PS Сорри, я кажется от жизни отстал... http://strokescribe.com/ru/serial-port- ... lorer.html

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

Добавлено: Вт апр 08, 2014 16:30:11
001
ks0 то, что надо!

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

Что нужно сделать, чтобы представить данные порта как текстовый файл?

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

Добавлено: Вт апр 08, 2014 16:47:59
ploop
Мля, я сейчас разозлюсь!
Не надо ничего пока писать! Просто посмотрите, что передаёт мультиметр. Дальше решим как быть с вашими явами и хтмл-ями

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

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

А с порта часто идет простой текст, прям как я тут печатаю. Ну с какими-нибудь маркерами начала/конца текста.

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

Добавлено: Вт апр 08, 2014 16:59:33
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.


И дальше там подробно описываются пакеты.
Что с этим можно сделать? Я тут узнал, что порт нужно "открывать" и т.п. Как это и с чем это едят?

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

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

Будет найден ActiveX - будет о чем говорить. Взаимодействие с портом это задача для другого языка программирования, никак не для JavaScript. В JavaScript никаких портов нет. И доступа к железу тоже нет.

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

Добавлено: Вт апр 08, 2014 17:15:30
001
ок. Может тогда стоит сменить язык?
Что для этого лучше подойдёт?

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


P.S. поискав, нашёл это https://github.com/billhsu/jUART

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

Добавлено: Вт апр 08, 2014 17:48:05
ks0
001 писал(а):ок. Может тогда стоит сменить язык?
Что для этого лучше подойдёт?

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

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

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

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

Чтения из порта задача с одной стороны простая, с другой требует представления о многопоточности, в JS такого понятия нет. Чтение должно осуществляться непрерывно в отдельном от UI потоке, с занесением данных в буфер. Может быть в современных языках типа C# все реализуется просто, но я только на VC++ лет 10 назад много кодил, сейчас лучше уже новые языки использовать.

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

Добавлено: Вт апр 08, 2014 17:53:46
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/
но как в них происходит взаимодействие с портом? Ведь они как-то пишут данные в файл? Как в этом разобраться и вытащить нужный кусок?

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

Добавлено: Вт апр 08, 2014 18:18:54
Мурик
Зачем вообще ActiveX для доступа к порту?

ТС, могу поредкмендовать изучить какой-то простой ЯП, нативно поддерживающий работу с COM портом (чтобы проще было для новичка). Например.
Или в крайнем случае, dll облегчающую работу с портом.

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

Добавлено: Вт апр 08, 2014 18:28:12
kalobyte

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

Добавлено: Вт апр 08, 2014 22:03:10
ploop
А вообще, вам срочно надо? А то я подумываю приложение на Qt накатать, там делов-то на вечер чисто показания вывести, долго только интерфейс и все красивости разрисовывать. Кроссплатформенное, разумеется.
Правда у меня UT71C, но шлют они, думаю, одинаково.

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

Добавлено: Вт апр 08, 2014 22:12:52
001
ploop, срочность может компенсироваться ценой вопроса :beer:

По ссылкам выше в общем-то все наработки по софту для этих мультиметров.
Мне нужно решить конкретную задачу и, главное, понять, как использовать сигнал от железки через ком-порт.

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

Добавлено: Вт апр 08, 2014 22:34:35
ploop
001 писал(а):рочность может компенсироваться ценой вопроса

Не может, к сожалению... со временем туго.
Но думаю на днях начну.

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

Добавлено: Вт апр 08, 2014 22:39:08
001
тогда прошу условия в ЛС.
Кстати, у UNI-T под каждую модель свои заморочки (передаётся ведь содержимое дисплея, а они разные — см первую и вторую ссылки)

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

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

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