Тема: RS232 com port
Показать сообщение отдельно
Старый 01.09.2014, 11:42   #33  
byte is offline
byte
Участник
 
36 / 31 (2) +++
Регистрация: 21.08.2007
Добрый день!

Приведенный код .net работает не так, как нужно. Ах ничего не выводит в инфолог, при завершении все выводится в редактор кода X++. Работаем через терминал, при этом в блокнот все сканируется нормально.

Цитата:
Сообщение от Cardagant Посмотреть сообщение

Приведу свой код с использованием .NET в X++ для обработки получения данных COM-порта. Может пригодится.
X++:
    str                         message;
    boolean                     keepTrying;
    InteropPermission           lclsInteropPerm;
    System.IO.Ports.SerialPort  SerialPort;
    ;

    lclsInteropPerm = new InteropPermission(InteropKind::ClrInterop);
    lclsInteropPerm.assert();

    try
    {
        SerialPort = new System.IO.Ports.SerialPort('COM3');

        // Parameters
        SerialPort.set_BaudRate(9600);
        SerialPort.set_Parity(System.IO.Ports.Parity::None);
        SerialPort.set_StopBits(System.IO.Ports.StopBits::One);
        SerialPort.set_DataBits(8);
        SerialPort.set_Handshake(System.IO.Ports.Handshake::None);
        // Timeout
        SerialPort.set_ReadTimeout(500);

        SerialPort.Open();

        keepTrying = true;
        while (keepTrying)
        {
            message = SerialPort.ReadExisting();

            if (message)
            {
                keepTrying = false;
                info(message);
            }
        }
    }
    catch (Exception::Internal)
    {
        error(AIFUtil::getClrErrorMessage());
    }
    catch (Exception::CLRError)
    {
        error(AIFUtil::getClrErrorMessage());
    }

    if (!CLRINterop::isNull(SerialPort))
    {
        SerialPort.Close();
    }

    CodeAccessPermission::revertAssert();