Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2012, 09:31   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию Работа с устройствами на com-порте

В пространстве имен System.IO.Ports есть класс Port, описание которого на MSDN крайне скупо(приведенная ссылка - это единственное, что удалось найти в MSDN по запросу "System.IO.Ports.Port"), поэтому немогу понять, каким образом использовать этот класс.
Предполагал с его помощью работать с устройством, подключенному к COM-порту(необходимое устройство и работа с ним уже поднималась в Дельфийском разделе на ProgrammersForum более 5 лет назад).
Если правильно понимаю, то работа с устройствами на COM-порте представляет собой не более чем отправление/получение команд в шестнадцетиричном представлении. Вот вырезка из мануала к устройству:

Т.е. чтобы проверить статус устройства, необходимо сделать примерно следующее:
Код:
			//cashCodeComPort_stringConst - константа, в которую записано имя Com-порта с подключенным устройством
			using (SerialPort mySerialPort = new SerialPort (cashCodeComPort_stringConst)) {
				if (mySerialPort.IsOpen == false) {
					mySerialPort.Open ();
				}								
				
				//делаем запрос статуса
				mySerialPort.Write ("31H");
				//получаем ответ
				String result = mySerialPort.ReadLine ();
				
				
				
				mySerialPort.Close ();
				
			}
или не так все просто и без танцов с бубном тут не обойдешься?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 08.08.2012, 10:22   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

никаких строк.
все в байтах идет.

и там в мане есть раздел с более подробным описанием команд, где указан ответ на команды и что значат байты в нем.

и если команда передает вам данные(не ACK), то вы должны ответить сигналом ACK.

кстати, в начале мана написан протокол команд, там все хитрее, минимальны пакет состоит из 6 байт помоему(или 5)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.08.2012, 02:42   #3
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
никаких строк.
все в байтах идет.

и там в мане есть раздел с более подробным описанием команд, где указан ответ на команды и что значат байты в нем.
А можно немного по-подробнее - т.е. вместо:
Код:
				
				mySerialPort.Write ("31H");
нужно писать что-то вроде:
Код:
//Hex представление в Dec
const Int32 Command31HToDec=49;
//отослать команду, сконвертированную в байт 
mySerialPort.Write(Convert.ToByte(Command31HToDec));
?
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
никаких строк.
и если команда передает вам данные(не ACK), то вы должны ответить сигналом ACK.

кстати, в начале мана написан протокол команд, там все хитрее, минимальны пакет состоит из 6 байт помоему(или 5)
А чуточку по-подробнее про АСК - что это значит, как получить данные, посланные устройством, как ответить сигналом АСК?
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
кстати, в начале мана написан протокол команд, там все хитрее, минимальны пакет состоит из 6 байт помоему(или 5)
А каким образом можно получить последовательность в указанное количество байт?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 09.08.2012, 09:08   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

массив байтов создаете и заполняете и отправляете.

протокол точно CCNET?

PS: почитайте внимательно весь ман, а не тока часть с номерами команд.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.08.2012 в 09:19.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.08.2012, 11:02   #5
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Подмигивание

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
массив байтов создаете и заполняете и отправляете.
Благодарю!
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
протокол точно CCNET?
С этим буду разбираться. Скачал отсюда дополнительные мануалы, в том числе и на русском - сложно читать и переводить доку по не знакомой теме. Это все можно скачать только зная логин/пароль(регистрация на сайте к моменту публикации поста была ограничена - требовалось что-то вроде инвайта), поэтому попробую прикрепить русскоязычное описание ID003 протокола к этому посту(судя по всему, именно с ним мне придется работать, а не с CCNET)
Еще раз спасибо
Вложения
Тип файла: doc Interface - BDP-FL (ID 003 compart.) RUSSIAN.doc (386.5 Кб, 88 просмотров)
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 10.08.2012, 11:31   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы можете определиться с протоколом?
первый скрин был из доки на CCNET протокол.
(у меня он есть просто(правда меня волновала часть BillValidator))
а второе уже иной протокол.

PS: знание англа обязательно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.08.2012, 16:42   #7
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
первый скрин был из доки на CCNET протокол.
(у меня он есть просто(правда меня волновала часть BillValidator))
а второе уже иной протокол.
Ни могли бы Вы поделиться своими наработками(литература, классы, знания и т.д.)?
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
PS: знание англа обязательно.
Это я понял уже давно, очень давно - с осени начинаю тотально заниматься и изучать английский язык(пока что мои знания ограничиваются полу-свободным переводом с английского на русский)
Заранее огромное спасибо за помощь
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 11.08.2012, 17:27   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)я пишу на С++.
2)в файле с которого скрин должно быть все, и формат протокола и описание параметров ком порта.
остаеться только разобраться и написать процедуры приема отправки пакетов, а уже потом от них написать уже процедуры по командам.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2012, 08:51   #9
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
1)я пишу на С++.
2)в файле с которого скрин должно быть все, и формат протокола и описание параметров ком порта.
Сейчас начал переводить документацию к устройству и понял, что с ним можно работать как по протоколу CCNet, так и по протоколу BDP, теперь осталась самая малость - разобрать что это за протоколы и как их использовать.
Ладно, пошел дальше изучать/переводить англоязычные маны - нашел себе развлечение на ближайшие пару дней
Благодарю, Пепел Феникса, если не против - позвольте задавать Вам небольшие вопросы по указанной теме через ЛС?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 12.08.2012, 09:03   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там протоколов помоему еще больше.

по CCNET скрин с первого файла, второй протокол это второй файл.

эхх, ну ладно можно, но отвечать буду по мере возможности.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с несколькими видео-устройствами mr_cipher Общие вопросы C/C++ 7 25.04.2012 13:36
Работа с мобильными устройствами Roont Общие вопросы C/C++ 3 01.07.2009 16:39
Работа с устройствами, JEDI API Koluna Win Api 14 03.03.2009 17:47
Работа с внешними устройствами через COM порт Georgios Помощь студентам 11 11.02.2009 15:59
обновление в блоге - Работа с устройствами в Windows Pblog Обсуждение статей 0 03.06.2008 12:30