Тема: RS232 com port
Показать сообщение отдельно
Старый 01.10.2008, 13:53   #13  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Вот небольшое консольное приложение на .Net написанное на C#. Тут показано как писать в COM-порт или читать из него. Если у Вас Ax4, то работайте с Net прямо из аксапты.
X++:
using System;
using System.IO.Ports;
using System.Threading;
public class PortChat
{
    static bool _continue;
    static SerialPort _serialPort;
    public static void Main()
    {
        string name;
        string message;
        StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
        Thread readThread = new Thread(Read);
        _serialPort = new SerialPort();

        _serialPort.PortName = "COM1"; // Пишим нужный порт 
        _serialPort.BaudRate = 38400;
        _serialPort.Parity = Parity.None;
        _serialPort.DataBits = 8;
        _serialPort.StopBits = StopBits.One;
        _serialPort.Handshake = Handshake.RequestToSend;
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;
        _serialPort.Open();
        _continue = true;
        readThread.Start();
        Console.WriteLine("Type QUIT to exit");
        while (_continue)
        {
            message = Console.ReadLine();
            if (stringComparer.Equals("quit", message))
            {
                _continue = false;
            }
            else if (stringComparer.Equals("ctrlz", message))
            {
                _serialPort.WriteLine("\x1A"); //Код Ctrl+Z 
            }
            else
            {
                _serialPort.WriteLine(message + "\r\n");
            }
        }
        readThread.Join();
        _serialPort.Close();
    }
    public static void Read()
    {
        while (_continue)  // Ждем данные 
        {
            try
            {
                string message = _serialPort.ReadExisting();
                if (message != "")
                {
                    Console.WriteLine(message);
                }
            }
            catch (TimeoutException) { }
        }
    }
}