2016-07-13 1 views
0

Я использую C# для создания программного обеспечения, которое отправляет триггеры на специальную машину, подключенную к компьютеру в параллельном порту.C# подключиться к LTP3 с диапазоном E000-E007

Я ничего не могу сделать с аппаратным обеспечением, и я пытаюсь отправить числа через LTP3, а LTP3 определяется с различным диапазоном, чем обычно, диапазон (в соответствии с DeviceManager) - E000-E007.

Я использую C#, и я пытаюсь отправить событие, но оно не работает. Код, который у меня есть, работает для обычного LTP3, и я использую 632 в качестве адреса (или 888 в случае LTP1).

Я действительно не понимаю, как это работает, что такое правильный порт? изменить код?

Вот часть в коде, который имеет дело с отправкой событий:

class PortControl 
{ 
    [DllImport("inpout32.dll", EntryPoint = "Out32")] 
    public static extern void Output(int adress, int value); // decimal 
} 

private void SendTrigger(int triggerId) 
{ 
    try 
    { 
     PortControl.Output(632, (short)triggerId); 
     Thread.Sleep(1); 
     PortControl.Output(632, 0); 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show("Error in sending trigger: " + e.Message); 
    } 
} 

Эта работа когда LPT3 имеет стандартный набор, но не в этом незнакомым диапазоне E000-E007.

Заранее благодарим за помощь!

ответ

0

Параметр адреса 632 является десятичным эквивалентом шестнадцатеричного значения 278. Аналогично, шестнадцатеричное значение E000 будет иметь десятичный эквивалент 57344.

Вы можете передать адрес в десятичной форме, если хотите, но это намного проще прочитать, если вы используете шестнадцатеричную нотацию. Просто прикрепите адрес 0x, например:

PortControl.Output(0xE000, ... 
Смежные вопросы