Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SerialPort COM, запрос-ответ, Общение с устройством через COM-port 
:(
    Опции темы
Frankyfrankly
  Дата 23.11.2014, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 15.5.2013
Где: Khmelnitsky

Репутация: нет
Всего: нет



Привет! Значица работаю с устройством через COM-порт. Есть спецификация. При включении устройства оно посылает на компорт Connect message. С этим проблем нет, запускаю отдельный поток в котором слушаю компорт вот:
Код

class Program
    {
        static SerialPort myCOM;
 
        static void Main(string[] args)
        {
            myCOM = new SerialPort("COM2", 38400);
            myCOM.Open();
            if(myCOM.IsOpen)
            {
                Console.WriteLine("Opened");
                Thread t = new Thread(() => ReadData());
                t.Start();
            }
 
            Console.Read();
        }
 
        static string ReadData()
        {
            string buff = "";
            while (true)
            {
                string temp = myCOM.ReadExisting();
 
                if (!String.IsNullOrEmpty(temp))
                {
                    buff += temp;
                    if(buff.Length == 52)
                    {
                        Console.WriteLine(buff);
                        return buff;
                    }
                }
            }
        }


вот такая вот строка приходит при включении
{{++!!0000E0001A1,CONNECT;LTR3_SERIAL_2371297F!!--}}

И вот мне нужно отправлять на устройство запроси и слушать ответы, но чего то не получается, либо я не понял как это делается
В методе Main(),после строчки Console.Read();, формирую строку запроса, и пишу ее в порт, и слушаю что придет
Код

Console.Read();
            if (myCOM.IsOpen)
            {
                byte[] datar = new byte[256];
                TransportFrame tc = TransportFrame.Create(packetNumber, ETransportFrameType.LoadtronicProtocols, "1; ;10");
                packetNumber++;
                myCOM.Write(tc.CompleteMessage);
                Thread.Sleep(600);
                myCOM.Read(datar, 0, datar.Length);
                Console.WriteLine(Encoding.UTF8.GetString(datar, 0, datar.Length));
 
            }
            Console.Read();
        }

Но код останавливается на myCOM.Read и ничего не получает.
Очень нужно научиться вести диалог с устройством, и потом парсить данные что приходят.
З.Ы. Устройство называется LOADTRONIC, кому надо прикрепляю [url=http://goo.gl/glt8pv]спецыфикацию запросов[/url], может я чего то там важного не заметил. И [url=http://goo.gl/kCLB35]клас формирующий строку запроса[/url].

PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.