首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到PBX机后,如何从PBX机接收数据?

连接到PBX机后,如何从PBX机接收数据?
EN

Stack Overflow用户
提问于 2012-02-06 18:18:18
回答 1查看 2.2K关注 0票数 1

你好,我最近遇到了一个问题,我已经搜索了两个多月,但还没有找到解决方案。我要写一个程序/应用程序(我已经在VB.NET 2010启动),连接通过松下KX-TEM824PBX机通过RS232端口(电缆已经连接: COM15/16取决于USB连接),并同时它连接到解析(接收)数据从PBX机本身,数据具有来电者ID,通话开始和结束的时间,通话的持续时间等我发现一些已经在互联网上的应用程序,做这项工作,但他们是自由尝试一段时间后,需要购买或重新启动应用程序。但我假设在代码端没有太多需要实现的东西。求求你我真的需要帮助。我正在发布下面的代码。附注:这是为了学习的目的。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2012-02-07 06:49:46

我也有这个PBX设备,所以我现在很好奇,但我明天要回去工作才能检查出来。

这段代码看起来像一个msdn示例代码,并且没有以任何方式为pbx应用程序进行定制。也许你应该按照hans的建议,首先让它在终端程序中工作,然后只使用正确的波特率、奇偶校验和停止位来设置你的应用程序。IIRC panasonic使用固定设置,因此提供选项只会使问题复杂化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9158600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档