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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2008, 06:21   #1
Spice
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 37
По умолчанию Работа с usb портом

Как записать/прочитать данные с USB-порта, как определить к какому из портов подключено устройство?

Правильно ли я понимаю, что работать с ним можно, как и с COM-портом, подобно файлу?

Такой вариант не работает:

Код:
SerialPort port = new SerialPort();

port.PortName = "USB1";
port.WriteTimeout = 500;
port.ReadTimeout = 500;
port.BaudRate = 9600;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Handshake = Handshake.RequestToSend;
port.DtrEnable = true;
port.RtsEnable = true;
port.NewLine = System.Environment.NewLine;

port.Open();

port.Close();
Буду признателен хоть какой-то информации. Поисковики дали скудный результат.

moderator: Не забываем про тег <CODE>
Что выбрать: зависимость от свободы или свободу от зависимости?..

Последний раз редактировалось merax; 14.07.2008 в 06:39.
Spice вне форума Ответить с цитированием
Старый 14.07.2008, 10:03   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Ну во первых

Цитата:
port.PortName = "USB1";
тут ошибка. Во вторых, надо создать SerialPort или использовать уже открытый. В третих надо импортировать в проект библиотеку Interop.MSCommLib.

Вот тебе кусочек моей проги. Писал для сотового телефона.

Код:
 

        private MSCommLib.MSComm axMSCom = new MSCommLib.MSComm();

        private void button1_Click(object sender, EventArgs e)
        {
            string[] s = SerialPort.GetPortNames();

            foreach (string st in s)
            {
                listView1.Items.Add(st.ToString());
            }

            axMSCom.CommPort = 1;
            if (axMSCom.PortOpen)
            {
                axMSCom.PortOpen = false;
            }

            axMSCom.RThreshold = 1;

            axMSCom.Settings = "9600,n,8,1";

            axMSCom.InputMode = 
                                         MSCommLib.InputModeConstants.comInputModeBinary |
                                         MSCommLib.InputModeConstants.comInputModeText;

            axMSCom.InputLen = 0;

            axMSCom.NullDiscard = false;
            
            axMSCom.PortOpen = true;
        }

        private void Comobj(object Sender, EventArgs e)
        {
            Application.DoEvents();

            if (axMSCom.CommEvent == (short)MSCommLib.OnCommConstants.comEvCTS)
            {
                MessageBox.Show("CTS");
            }

            if (axMSCom.InBufferSize > 0)
            {
                if (axMSCom.Input is string)
                {
                    string Input = (string)axMSCom.Input;
                    MessageBox.Show(Input);
                }
                else
                {
                    byte[] Input = (byte[])axMSCom.Input;
                    MessageBox.Show(Input.ToString());
                }
            }

        }

Последний раз редактировалось merax; 14.07.2008 в 10:07.
merax вне форума Ответить с цитированием
Старый 15.07.2008, 10:02   #3
Spice
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 37
По умолчанию

Цитата:
Во вторых, надо создать SerialPort или использовать уже открытый.
Создаю SerialPort так:
Код:
SerialPort port = new SerialPort();
Или я что-то неправильно понимаю?

Цитата:
В третих надо импортировать в проект библиотеку Interop.MSCommLib.
Подскажи, как это сделать.
Что выбрать: зависимость от свободы или свободу от зависимости?..
Spice вне форума Ответить с цитированием
Старый 15.07.2008, 10:23   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

1) Это ты создаешь объект и выделяешь под него память...

2) Solution Explorer -> References -> Правая клавиша -> Add References. Вкладка COM. У меня на C# Express 2008 библиотека называется Microsoft Comm Control 6.0, галочку ставь и Ок жми.
merax вне форума Ответить с цитированием
Старый 15.07.2008, 14:13   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Вот книжка про USB вообще(если в течении 14 дней небудет загрузок, файл удалиться ) :
часть1: http://www.webfile.ws/d/29268
часть2: http://www.webfile.ws/d/29269
___________________________________ ___________________________________ _______________
Это один файл, разбит на 5 частей.
Alter вне форума Ответить с цитированием
Старый 16.07.2008, 07:39   #6
Spice
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 37
По умолчанию

Библиотеку импортировал. Правда на вкладке COM ее так и не нашлось, пришлось качать и регистрировать (regsvr32 MSCOMM32.OCX).
Merax, может быть ты меня не правильно понял. Мне нужно работать с USB-портом, а не с COM. А результат
Код:
SerialPort port = new SerialPort();
string[] s = SerialPort.GetPortNames();

foreach (string st in s)
{
    listView1.Items.Add(st.ToString());
}
дает только COM1
Что выбрать: зависимость от свободы или свободу от зависимости?..
Spice вне форума Ответить с цитированием
Старый 16.07.2008, 08:32   #7
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

На лови. Добавишь в референсес, посмотришь пример.
Вложения
Тип файла: rar CSharp.UsbLib.rar (9.4 Кб, 411 просмотров)
merax вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нестандартная работа с COM портом Alex_C Win Api 2 22.07.2008 02:34
работа с COM портом ShAzat Общие вопросы Delphi 8 28.05.2008 20:08
работа с ком портом UROKSAN Общие вопросы Delphi 0 05.05.2008 06:28
Работа с LPT портом chingiz Паскаль, Turbo Pascal, PascalABC.NET 1 17.11.2007 21:21