Tjabba!
Jag fick den ljusa idén att istället för att köpa ett program för 1500 kr (ActiveComport från ActiveXperts), så skulle jag göra motsvarande själv... som dessutom var anpassat efter mina önskemål. Det var ca 105 år sedan jag programmerade i VB senast, så jag tänkte att jag gör det som ett vanligt program först för att se att det blir som jag vill.
Programmet i fråga ska skicka ut ren text, eller char, till en display ansluten till en COM-port. Sagt och gjort. Det kanske är onödigt med hela koden för det programmet här. Vad det gör är att ta text skriven i textbox1 resp textbox2 och skickar till COM-porten.
Public Class Display
Private Sub Visatext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Visatext.Click
Dim Disp1, Disp2 As String
Disp1 = TextBox1.Text
Disp2 = TextBox2.Text
SendSerialData(Disp1, Disp2)
End Sub
Sub SendSerialData(ByVal Disp1, ByVal Disp2)
Dim Output As String
Using comport As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1")
Output = Chr(12) & Disp1 & Chr(31) & Disp2
comport.WriteLine(Output)
comport.Close()
End Using
End Sub
Private Sub Avsluta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Avsluta.Click
SendSerialData("", "")
End
End Sub
Private Sub Display_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SendSerialData("", "")
End Sub
Private Sub Reset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Reset.Click
SendSerialData("", "")
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
End Class
Det här fungerar jättebra och precis som jag önskar. Då kom steg 2, att göra om det till en web control/ActiveX. Tanken är att man via en webbsida (asp) ska kunna skicka data till displayen beroende på vad man klickar på. Rensat bort det som knapparna gör då det är onödigt och kvar blev i princip detta:
Sub SendSerialData(ByVal Disp1, ByVal Disp2)
Dim Output As String
Using comport As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1")
Output = Chr(12) & Disp1 & Chr(31) & Disp2
comport.WriteLine(Output)
comport.Close()
End Using
End Sub
Nu är problemet att det blir error här:
My.Computer.Ports.OpenSerialPort
Ports finns inte tillgängligt när man gör det som en webbkontroll. Någon som vet hur jag kan öppna COM-porten via en ActiveX? Det bör ju uppenbarligen gå på något sätt...