2013-07-11 1 views
1

Я пытаюсь прочитать последовательный порт RS232 с считывателем Mag Stripe в Ubuntu. У меня USB один работает нормально (ID-Tech). Но я пытаюсь заставить читателя Neuron работать. Я незнакомая последовательный порт связь в целом, но с узлом-сериалом я написал простое приложение, которое сидит и ждет устройства:Прочтите SerialPort с узлом-серийным

node tester.js /dev/ttyS0 

Чем выплевывает выход из устройства считывания карт. Отлично работает с устройством чтения USB ID-Tech, но когда у меня подключено устройство последовательного порта, я ничего не получаю. Я также немного не уверен, как определить, какой Serial Port он использует. Есть ли лучший инструмент для «зондирования» последовательных портов в Ubuntu и выяснить, какой из них используется Mag Reader?

UPDATE

Исследуя вокруг него, кажется, инструменты для использования являются:

sudo cat /dev/ttyS0 

Проблема у меня в том, какой порт устройство, подключенное к, делать выше на ttyS0,1,2 , 3 ничего не делает и должен выгружать некоторые данные с устройства. Однако я не уверен, если это необходимо запустить первый:

sudo inputattach -dump /dev/ttyS0 

Это просто висит на курсоре, и я понял, попробовать и тип клавиатуры для чтения карт памяти, но такой же вопрос просто висит. Выход из dmesg | grep ttyS показывает порты:

[ 1.906700] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A 
[ 1.927250] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A 
[ 1.947758] serial8250: ttyS2 at I/O 0x3e8 (irq = 4) is a 16550A 
[ 1.968273] serial8250: ttyS3 at I/O 0x2e8 (irq = 3) is a 16550A 
[ 1.990199] 00:04: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A 
[ 2.010770] 00:05: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A 
[ 2.031335] 00:06: ttyS2 at I/O 0x3e8 (irq = 5) is a 16550A 
[ 2.051952] 00:07: ttyS3 at I/O 0x2e8 (irq = 11) is a 16550A 
+0

У вас есть что-то, что на самом деле проверяет электрическую активность на последовательном порту, например, ключ со светодиодами или другое устройство, которое, как вы знаете, действительно функционирует правильно с последовательным соединением? Тестирование было бы простым вопросом отправки некоторых байтов в порт и наблюдения за миганием индикаторов. –

+0

Спасибо, так что в linux я предполагаю, что я просто пишу в последовательный порт и ожидаю некоторой обратной связи на устройстве? – Michael

+0

Да, предполагая, что вы можете сделать это так, чтобы это было видно. Что-то вроде поднятия и опускания линии RTS или CTS (какое-то время) каждые полсекунды. –

ответ

0

С подключенным устройством вы можете запустить этот код узла и проверить информацию обо всех портах. Вы, скорее всего, узнаете что-то, и это тот порт, который вы ищете.

var serialport = require("serialport"); 

serialport.list(function (err, ports) { 
    ports.forEach(function(port) { 

     console.log("pnpId: " + port.pnpId); 
     console.log("manufacturer: " + port.manufacturer); 
     console.log("comName: " + port.comName); 
     console.log("serialNumber: " + port.serialNumber); 
     console.log("vendorId: " + port.vendorId); 
     console.log("productId: " + port.productId); 
    }); 
}); 

затем подключить с помощью:

var myPort = new SerialPort("/dev/ttyACM0", { // replace ttyACM0 with the right port on your computer 
    baudrate: 115200, 
    parser: serialport.parsers.readline("\r\n") 
}); 

Надеется, что это помогает!

+0

Не могли бы вы взглянуть на [это] (https://stackoverflow.com/questions/45936310/serialport-module-in-node-js-works-only-if-minicom-is-active-on-the- порт)? Поблагодарили бы всех указателей ... – Sam