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


Автор: kma 26.12.2005, 16:06
Мне нужно прослушать Com Port, пожалуйста, подскажите, как это можно сделать на C#.
Заранее спасибо.

Автор: kma 27.12.2005, 11:05
Может я не правильно выразился. Мне нужно считывать данные со сканера штрих кодов, который подключен к “COM1” порту. Подскажите, пожалуйста, какой класс нужно использовать для получения данных с порта.

Автор: AntonSaburov 27.12.2005, 12:39
Нет такого класса - самому пришлось когда-то писать отдельную DLL на С++. Я не знаю как по поводу .NET 2005, но в 2003 этого не было. Поищи по форуму - этот вопрос уже точно обсуждался. Или даже в FAQ есть (по C++).
Добавлено @ 12:39
Я посмотрю дома - может что-то найду из старых проектов.

Автор: kma 27.12.2005, 14:40
Посмотри если найдешь буду очень благодарен smile

Автор: Poison80 28.12.2005, 14:52
так в 2005 net есть уже компопент сериал порт называеться

Автор: dronzo 28.12.2005, 16:17
http://rsdn.ru/Forum/Message.aspx?mid=605355#605355
Смотри последний и 2-ой с конца посты.

Автор: kma 29.12.2005, 13:10
Скачал я пример по этой ссылке, он не компилируется.
Под какой он Visual NET он написан, у меня стоит 2003

Автор: dronzo 29.12.2005, 15:00
Знаешь, "я скачал, он не компилируется" - это весьма расплывчатое понятие ;) Поподробнее : чем, как и что получается smile
Во-вторых, зачем тебе здался весь проект - непонятно. Тебе кроме DeviceStream.cs для COM-porta вряд ли что ещё понадобиться и отражено там всё довольно понятно, имхо.



Автор: kma 29.12.2005, 15:57
Происходит ошибка при вызове функции ReaderFile из Kernel32 : “Unsafe code may only appear if compiling with /unsafe”

Автор: arilou 29.12.2005, 16:46
kma
Идешь в св-ва проекта, configuration properties, ставишь allow unsafe code blocks = true.

Автор: mr.DUDA 29.12.2005, 16:46
Надо поставить в свойствах проекта опцию "Allow unsafe code"

Автор: kma 29.12.2005, 17:21
Всем спосибо smile

Автор: kma 11.1.2006, 12:06
Подскажите еще, пожалуйста. При вызове функции из dll файла ReadFile Программа зависает, если в COM Port нет, не каких данных. Что можно сделать?
Заранее спасибо.

Автор: _hunter 11.1.2006, 12:34
засунуть ее в отдельный поток -- функция явно работает в синхронном ( блокирующем ) режиме и просто ждет появления данных

Автор: kma 11.1.2006, 12:39
Подскажи, пожалуйста, как это сделать, просто я. С# очень слабо знаю.

Автор: _hunter 11.1.2006, 18:35
я тоже smile
почитай в MSDN' e статью "Creating Threads and Passing Data at Start Time "

вот:
Код

using System;
using System.Threading;

public class ServerClass
{
    // The method that will be called when the thread is started.
    public void InstanceMethod()
    {
        Console.WriteLine(
            "ServerClass.InstanceMethod is running on another thread.");

        // Pause for a moment to provide a delay to make 
        // threads more apparent.
        Thread.Sleep(3000);
        Console.WriteLine(
            "The instance method called by the worker thread has ended.");
    }

    public static void StaticMethod()
    {
        Console.WriteLine(
            "ServerClass.StaticMethod is running on another thread.");

        // Pause for a moment to provide a delay to make 
        // threads more apparent.
        Thread.Sleep(5000);
        Console.WriteLine(
            "The static method called by the worker thread has ended.");
    }
}

public class Simple{
    public static int Main(String[] args)
    {
        Console.WriteLine("Thread Simple Sample");

        ServerClass serverObject = new ServerClass();

        // Create the thread object, passing in the 
        // serverObject.InstanceMethod method using a 
        // ThreadStart delegate.
        Thread InstanceCaller = new Thread(
            new ThreadStart(serverObject.InstanceMethod));

        // Start the thread.
        InstanceCaller.Start();

        Console.WriteLine("The Main() thread calls this after " 
            + "starting the new InstanceCaller thread.");

        // Create the thread object, passing in the 
        // serverObject.StaticMethod method using a 
        // ThreadStart delegate.
        Thread StaticCaller = new Thread(
            new ThreadStart(ServerClass.StaticMethod));

        // Start the thread.
        StaticCaller.Start();

        Console.WriteLine("The Main() thread calls this after "
            + "starting the new StaticCaller thread.");

        return 0;
    }
}


пример оттуда

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