Добавьте эти строки непосредственно под вторым входом:
if (1 >= a <= 7):
gebruikt[a-1] += 1
else:
print ("Invalid Index Number")
Если Вы хотите использовать события, удостоверяются, что Вы объявляете свой объект последовательного порта использование 'withevents'. Ниже примера позволит Вам соединяться с последовательным портом и сгенерирует событие с полученной строкой.
Imports System.Threading
Imports System.IO
Imports System.Text
Imports System.IO.Ports
Public Class clsBarcodeScanner
Public Event ScanDataRecieved(ByVal data As String)
WithEvents comPort As SerialPort
Public Sub Connect()
Try
comPort = My.Computer.Ports.OpenSerialPort("COM5", 9600)
Catch
End Try
End Sub
Public Sub Disconnect()
If comPort IsNot Nothing AndAlso comPort.IsOpen Then
comPort.Close()
End If
End Sub
Private Sub comPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles comPort.DataReceived
Dim str As String = ""
If e.EventType = SerialData.Chars Then
Do
Dim bytecount As Integer = comPort.BytesToRead
If bytecount = 0 Then
Exit Do
End If
Dim byteBuffer(bytecount) As Byte
comPort.Read(byteBuffer, 0, bytecount)
str = str & System.Text.Encoding.ASCII.GetString(byteBuffer, 0, 1)
Loop
End If
RaiseEvent ScanDataRecieved(str)
End Sub
End Class
Я нашел, что эта статья была довольно хороша.
Код, который я написал от него:
port = new System.IO.Ports.SerialPort(name, 4800, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
buffer = port.ReadLine();
// process line
}
Извините это - C#, но...
Единственная проблема, которую я имею с ним, - то, если порт отбрасывается, в то время как это открыто, приложение, кажется, перестало работать на выходе.
Спасибо всем за Вашу справку, особенно ответ об инстанцировании класса с помощью ключевого слова WithEvents.
Я нашел действительно большую статью, которая объясняет, как создать класс менеджера для последовательного порта. Это также обсуждает передающие Двоичные, а также Шестнадцатеричные данные к последовательному порту. Это было довольно полезно.
Я использовал класс SerialPort.Net в прошлом проекте, и я хорошо работал. Вам действительно не нужно ничто больше. Проверьте аппаратную установку в панель управления и удостоверьтесь, что Вы инстанцируете класса с теми же параметрами.