Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Работа с портами?


Автор: WaReZMEN 30.1.2007, 11:41
Меня интересует как на C# работать с RS232 портом?  И вообще работа с портами?
Тоесть как что делается какие функций и т.д.

Автор: marcusmae 30.1.2007, 14:42
Если я правильно понимаю, RS232 - это стандарт интерфейса, а работать Вы хотите с сериал-портом.

1. http://www.codeproject.com/csharp/SerialCommunication.asp - не подойдёт?
Код

using System.IO.Ports;

2. http://www.activexperts.com/activcomport/howto/vcnet/ - но не уверен, что предлагаемый там SDK бесплатный.

Автор: WaReZMEN 30.1.2007, 15:03
Да RS232 это что то типа com порта...

Автор: WaReZMEN 31.1.2007, 03:48
А как с USB портами работать?

Автор: WaReZMEN 31.1.2007, 12:08
Не ужели никто не работал с USB????

Автор: СЭНСЭЙ 16.4.2007, 16:05
А кто знает как написать обработчик события, реагирующий на посылку сигнала на ком порт?
Нужно типа сервиса написать для спаяного прибора, который на ком порт посылает строки символов.

Автор: stashe 16.4.2007, 16:59
СЭНСЭЙ, уточни плиз (не совсем понял что хошь), у мя есть класс, посылающий, принимающий, команды с прибора по ком порту (проверки и т.д.)

Добавлено через 1 минуту и 32 секунды
Код

   protected void OnReceiveEvent(Object sender, SerialDataReceivedEventArgs e)
    {
        int byteToRead = 0;
        string msg = "";
        byteToRead = SerialPort.BytesToRead;
        string[] msgToMainForm ;
        if (byteToRead > 0)
        {
            msg =  SerialPort.ReadExisting();           
        }

        msgToMainForm = GetFormattedMessage(msg);
        for (int i = 0; i < msgToMainForm.Length; i++)
        {
            if (msgToMainForm[i] != null) MessageToMainForm(msgToMainForm[i]);
        }        
        MessageToMainForm(msg);
    }


щяз оч. занят могу завтра поподробней если интересно ()

Добавлено через 4 минуты и 6 секунд
Код


public delegate void DeviceMessageHandler(object sender, MessageFromDeviceArg e);

public class MessageFromDeviceArg : EventArgs
{
    public string msg;

    public MessageFromDeviceArg(string _msg_)
    {
        msg = _msg_;
    }
}


    protected void MessageToMainForm(string str)
    {
        object sender = System.Threading.Thread.CurrentThread;
        MessageFromDeviceArg e = new MessageFromDeviceArg(str);
        MainForm.MainFormDeviceMsgHandler(sender,e);
    }


я сейчас тупо запостил, не читая и не исправляя, работает, если что, завтра объясню, исправлю и т.д. 

Автор: СЭНСЭЙ 16.4.2007, 18:32
Спосибо за ответ. Буду проверять. На первый взгляд - похоже на то что нужно.
У меня прибор - коммутатор: в него 32 трубки теелфонных тыкаются. Когда происходят изменения (входящий хзвонок, подъем трубки или сброс) посылается текст на ком порт с номером трубки и кодом операции, вот их и нужно прочитать. К сожелению техники, проектирующие прибор не смогли точно дать формат данных, дали следующую инфу:
первые 3 байта - "tel" 4й байт - номер трубки, 5й - номер канала (точно не понял что это, но неважно) 6й - "=" и последние 4 байта - имя операции (входящий хзвонок, подъем трубки или сброс). Просто нужно перехватить посылку сигналов на ком порт и прочесть входящий набор байт в строку.

Автор: AquilA 12.11.2007, 21:46
Вопрос по com порту! продолжение...

собственно есть код на Шарпе
Код

SerialPort sp = new SerialPort();
sp.Open();
sp.WriteLine("test");
sp.Close();


ну собстевнно проверяю это дело физически, собственно прозваниваю контакты с GND.
Но если мне память не изменяет, то начиная с Windows NT выполнение обращения к портам доступно только с нулевого кольца! 
Следовательно либо код все таки не выполняется, либо у меня руки кучерявые!

Подскажите пожалуйста, передача выполняется в этом случае или нужно шлюз колпашить?

Автор: AnTON_G 13.11.2007, 08:25
to AquilA:
компонент SerialPort работает. Если просто узнать как работать с этим компонентом то на форуме не раз обсуждалось пользуйся поискомsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)