PBXマシンに接続された後、PBXマシンからデータを受信するにはどうすればよいですか?

こんにちは、私は最近、問題が発生して2ヶ月以上を探していますが、それについての解決策はまだ見つかりませんでした。私はRS232ポート経由でパナソニックKX-TEM824 PBXマシンを介して接続するプログラム/アプリケーション(VB.NET 2010で既に起動済み)を作成する必要があります(既に接続されているケーブル:USBに接続されているCOM15/16)発呼者IDを持っているデータ、発呼と終了の時間、呼の時間などを解析します。しばらくしてもう一度アプリを購入または再開する必要があります。しかし、私はコード側で実装することはあまりないと仮定します。私は本当に助けが必要です。私は以下のコードを投稿しています。 P.S.それは勉強のためです。

Imports System 
Imports System.ComponentModel 
Imports System.Threading 
Imports System.IO.Ports 
Public Class frmMain 
Dim myPort As Array 'COM Ports detected on the system will be stored here 
Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data 

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
'When our form loads, auto detect all serial ports in the system and populate the cmbPort Combo box. 
myPort = IO.Ports.SerialPort.GetPortNames() 'Get all com ports available 
cmbBaud.Items.Add(9600) 'Populate the cmbBaud Combo box to common baud rates used 
cmbBaud.Items.Add(19200) 
cmbBaud.Items.Add(38400) 
cmbBaud.Items.Add(57600) 
cmbBaud.Items.Add(115200) 

For i = 0 To UBound(myPort) 
cmbPort.Items.Add(myPort(i)) 
Next 
cmbPort.Text = cmbPort.Items.Item(0) 'Set cmbPort text to the first COM port detected 
cmbBaud.Text = cmbBaud.Items.Item(0) 'Set cmbBaud text to the first Baud rate on the list 

btnDisconnect.Enabled = False 'Initially Disconnect Button is Disabled 

End Sub 

Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click 
SerialPort1.PortName = cmbPort.Text 'Set SerialPort1 to the selected COM port at startup 
SerialPort1.BaudRate = cmbBaud.Text 'Set Baud rate to the selected value on 

'Other Serial Port Property 
SerialPort1.Parity = IO.Ports.Parity.None 
SerialPort1.StopBits = IO.Ports.StopBits.One 
SerialPort1.DataBits = 8 'Open our serial port 
SerialPort1.Open() 

btnConnect.Enabled = False 'Disable Connect button 
btnDisconnect.Enabled = True 'and Enable Disconnect button 

End Sub 

Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click 
SerialPort1.Close() 'Close our Serial Port 

btnConnect.Enabled = True 
btnDisconnect.Enabled = False 
End Sub 

Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click 
SerialPort1.Write(txtTransmit.Text & vbCr) 'The text contained in the txtText will be sent to the serial port as ascii 
'plus the carriage return (Enter Key) the carriage return can be ommitted if the other end does not need it 
End Sub 

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 
ReceivedText(SerialPort1.ReadExisting()) 'Automatically called every time a data is received at the serialPort 
End Sub 
Private Sub ReceivedText(ByVal [text] As String) 
'compares the ID of the creating Thread to the ID of the calling Thread 
If Me.rtbReceived.InvokeRequired Then 
Dim x As New SetTextCallback(AddressOf ReceivedText) 
Me.Invoke(x, New Object() {(text)}) 
Else 
Me.rtbReceived.Text &= [text] 
End If 
End Sub 

Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged 
If SerialPort1.IsOpen = False Then 
SerialPort1.PortName = cmbPort.Text 'pop a message box to user if he is changing ports 
Else 'without disconnecting first. 
MsgBox("Valid only if port is Closed", vbCritical) 
End If 
End Sub 

Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged 
If SerialPort1.IsOpen = False Then 
SerialPort1.BaudRate = cmbBaud.Text 'pop a message box to user if he is changing baud rate 
Else 'without disconnecting first. 
MsgBox("Valid only if port is Closed", vbCritical) 
End If 
End Sub 
End Class
1
あなたは、ハンドシェイクプロパティを設定していません。必須、またはDtrEnableプロパティとRtsEnableプロパティをtrueに設定する必要があります。ハイパーターミナルやパテのような別のアプリでこれを動作させることで、接続が良好で、選択した設定が正しいことが確信できます。
追加された 著者 Hans Passant,
"...私はVB.NET 2010で既に始まったプログラム/アプリケーションを書かなければなりません。" >>>> philobotics.com/serial-port-interfacing-with-vb-net-2010 コピー&ペーストは書き込みではありません。
追加された 著者 David Sdot,

1 答え

私もこのPBXユニットを持っているので、今は好奇心が強いですが、明日の仕事で私が戻ってくるまでそれをチェックすることはできません。

このコードはmsdnサンプルコードのように見えますが、pbxアプリケーションのためにどのようにもカスタマイズされていません。おそらくあなたはハンズが示唆しているように、まずターミナルプログラムで作業してから、適切なボー、パリティ、ストップビットでアプリケーションをセットアップしてください。 IIRCパナソニックは固定設定を使用するため、オプションを指定するだけで問題が複雑になります。

0
追加された