線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3688
推到 Plurk!
推到 Facebook!

關於數據機等待連接的問題..

尚未結案
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-08 16:57:45 IP:218.164.xxx.xxx 未訂閱
請問一下我要把數據機當成server端讓對方撥接 我下的AT command是ATS0=1E0Q1 對方都撥進不來, 但是如果我用windows的終端機程式先等候來電 讓對方撥一遍, 我的程式就可以讓人家撥了 我在想是不是我的AT command下錯了,希望高手指點一下~
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-08 17:23:42 IP:61.221.xxx.xxx 未訂閱
你說的是 網路要分給外部使用嗎? 如果是應該是叫 RAS 古老的東西了 NT 2000 lINUX 都有方式 不過使用此法 方便之後的問題是粉不安全與頻寬被人盜用 轉貼一篇 這是VB的 利用RAS調用在VB6.0中實現撥號上網 http://www.yesky.com/20011231/212571.shtml 2002-01-05· ·蘭偉波··yesky 1 2 下一頁 我們常用的軟體如:JETCAR(現在爲FLASHGET),GO!ZILLA等都具有撥號上網功能。那麽,如何在自己編寫的應用程式中也實現上述的功能呢?本文就利用RAS調用介紹在自己編寫的應用程式如何實現撥號上網。 一.與撥號網路有關的結構和函數 1.RASDIALPARAMS95結構.其定義如下: Public Type RASDIALPARAMS95 dwSize As Long szEntryName(RAS95_MaxEntryName) As Byte szPhoneNumber(RAS95_MaxPhoneNumber) As Byte szCallbackNumber(RAS95_MaxCallbackNumber) As Byte szUserName(UNLEN) As Byte szPassword(PWLEN) As Byte szDomain(DNLEN) As Byte End Type 其中,dwSize表示該結構的大小(以位元組爲單位)。szEntryName表示一個遠端存取的入口名,也就是WINDOWS下的撥號網路中的連接圖示小的文字;szEntryName參數可是是空串,表示僅與第一個有效的MODEM建立遠端連接。szPhoneNumber爲表示呼叫的號碼。當szEntryName是空時,zPhoneNumber不能爲空。szCallbackNumber表示回叫號碼,一般都設爲空。szUserName爲建立遠端存取的用戶名。szPassword爲建立遠端存取的密碼。szDomain爲進行遠端存取用戶名和密碼認證的功能變數名稱。我們將szDomain設爲空,表示遠端存取的伺服器也是該功能變數名稱下的成員。 2.RASDIAL函數.其API聲明爲: Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long RASDIAL函數用於建立RAS客戶機和RAS伺服器的連接。 各參數解釋如下: lpRasDialExtensions參數在WINDOWS95/98下被忽略。 lpszPhonebook參數在WINDOWS95/98下也被忽略。 lprasdialparams參數是指向一個含有RAS連接參數值的RASDIALPARAMS結構變數。 dwNotifierType參數用於指出參數lpvNotifier的性質。若lpvNotifier 爲NULL,則dwNotifierType的值被忽略;若lpvNotifier不爲NULL,則dwNotifierType應該爲下列值之一: (1).0XFFFFFFFF------指出lpvNotifier參數是一個接收進程通知消息的視窗控制碼; (2).0----------------指出lpvNotifier指向一個RASDIALFUNC回調函數; (3).1----------------指出lpvNotifier指向下一個RASDIALFUNC1回調函數。 lpvNotifier參數用於指向一個接收RASDIAL事件通知的視窗或者回調函數,其性質由dwNotifierType參數決定: (1).若lpvNotifier不NULL,表示是非同步通信。即RASDIAL會對每個事件發送一個視窗消息或者調用回調函數。RASDIAL函數會立即返回,它通過視窗或者調用回調函數建立連接,與進程通信。 (2).若lpvNotifier是NULL,表示同步通信。即RASDIAL函數在連接建立完成或者失敗後才會返回。 lphRasConn參數指向HRASCONN變數,必須先將lphRasConn設置爲NULL,然後再調用RASDIAL函數。如果RASDIAL函數調用成功,lphRasconn會放置一個RAS連接控制碼。 3.RASHANGUP函數.其API聲明爲: Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long RASHANGUP函數用於斷開一個RAS連接。其參數hRasConn爲指向一個RAS連接的控制碼。 二.用VB6.0實現RAS撥號上網過程。 新建一個工程,取名爲RasDial;然後在該工程中加入如下專案: 1.新建一個表單Form1,然後在該表單中加入如下元件: ("連接"按鈕取名爲Ras_Dial,"挂斷"按鈕取名爲:Ras_HangUp,"退出"按鈕取名爲:"Cancel". 3個文本框分別取名爲:PhoneNumber,UserName,PassWord.) 利用RAS調用在VB6.0中實現撥號上網 http://www.yesky.com/20011231/212571_1.shtml 2002-01-05· ·蘭偉波··yesky 上一頁 1 2 2.雙擊連接按鈕,加入如下代碼: Private Sub Ras_Dial_Click() Dim temp As Long If PhoneNumber.Text = "" Or UserName.Text = "" Or PassWord.Text = "" Then temp = MsgBox("您沒有輸入有效的撥號網路參數。", vbOKOnly, "錯誤") Exit Sub End If temp = AddConnection("", PhoneNumber.Text, "", UserName.Text, PassWord.Text, "") Select Case temp Case ERROR_PORT_ALREADY_OPEN: temp = MsgBox("錯誤,埠已經打開!", vbOKOnly, "Error") Case ERROR_UNKNOWN: temp = MsgBox("未知的錯誤!", vbOKOnly, "Error") Case ERROR_REQUEST_TIMEOUT: temp = MsgBox("錯誤,請求超時!", vbOKOnly, "Error") Case ERROR_PASSWD_EXPIRED: temp = MsgBox("錯誤,您沒有輸入密碼!", vbOKOnly, "Error") Case ERROR_NO_DIALIN_PERMISSION: temp = MsgBox("錯誤,沒有撥號音!", vbOKOnly, "Error") Case ERROR_SERVER_NOT_RESPONDING: temp = MsgBox("錯誤,撥入的遠端電腦沒有回應!", vbOKOnly, "Error") Case ERROR_UNRECOGNIZED_RESPONSE: temp = MsgBox("錯誤,未知的回應!", vbOKOnly, "Error") Case ERROR_NO_RESPONSES: temp = MsgBox("錯誤,沒有回應!", vbOKOnly, "Error") Case ERROR_DEVICE_NOT_READY: temp = MsgBox("錯誤,設備沒有準備好!", vbOKOnly, "Error") Case ERROR_LINE_BUSY: temp = MsgBox("錯誤,占線!", vbOKOnly, "Error") Case ERROR_NO_ANSWER: temp = MsgBox("錯誤,沒有應答信號!", vbOKOnly, "Error") Case ERROR_NO_CARRIER: temp = MsgBox("錯誤,沒有載波信號!", vbOKOnly, "Error") Case ERROR_NO_DIALTONE: temp = MsgBox("錯誤,沒有撥號音!", vbOKOnly, "Error") Case ERROR_AUTHENTICATION_FAILURE: temp = MsgBox("用戶名密碼出錯!", vbOKOnly, "Error") Case ERROR_PPP_TIMEOUT: temp = MsgBox("PPP接入超時。", vbOKOnly, "Error") End Select End Sub 3.雙擊挂斷按鈕,加入如下代碼: Private Sub Ras_HangUp_Click() Dim temp As Long temp = RasHangUp(hRasConn) End Sub 4.雙擊退出按鈕,加入如下代碼: Private Sub Cancel_Click() Unload Me End Sub 5.最後,新建一個模組,取名爲Ras_Dial,加入如下代碼: Option Explicit Public hRasConn As Long '定義一個指向RAS調用的全局控制碼 Public Const APINULL = 0& Public Const UNLEN = 256 Public Const DNLEN = 15 Public Const PWLEN = 256 Public Const RAS95_MaxPhoneNumber = 128 Public Const RAS95_MaxEntryName = 256 Public Const RAS95_MaxCallbackNumber = RAS95_MaxPhoneNumber Public Type RASDIALPARAMS95 dwSize As Long szEntryName(RAS95_MaxEntryName) As Byte szPhoneNumber(RAS95_MaxPhoneNumber) As Byte szCallbackNumber(RAS95_MaxCallbackNumber) As Byte szUserName(UNLEN) As Byte szPassword(PWLEN) As Byte szDomain(DNLEN) As Byte End Type '********************************** '* RAS調用錯誤代號 * '********************************** Public Const NOT_SUPPORTED = 120& Public Const RASBASEERROR = 600& Public Const SUCCESS = 0& Public Const ERROR_PORT_ALREADY_OPEN = (RASBASEERROR 2) Public Const ERROR_UNKNOWN = (RASBASEERROR 35) Public Const ERROR_REQUEST_TIMEOUT = (RASBASEERROR 38) Public Const ERROR_PASSWD_EXPIRED = (RASBASEERROR 48) Public Const ERROR_NO_DIALIN_PERMISSION = (RASBASEERROR 49) Public Const ERROR_SERVER_NOT_RESPONDING = (RASBASEERROR 50) Public Const ERROR_UNRECOGNIZED_RESPONSE = (RASBASEERROR 52) Public Const ERROR_NO_RESPONSES = (RASBASEERROR 60) Public Const ERROR_DEVICE_NOT_READY = (RASBASEERROR 66) Public Const ERROR_LINE_BUSY = (RASBASEERROR 76) Public Const ERROR_NO_ANSWER = (RASBASEERROR 78) Public Const ERROR_NO_CARRIER = (RASBASEERROR 79) Public Const ERROR_NO_DIALTONE = (RASBASEERROR 80) Public Const ERROR_AUTHENTICATION_FAILURE = (RASBASEERROR 91) Public Const ERROR_PPP_TIMEOUT = (RASBASEERROR 118) '********************************** '* RAS API 聲明 * '********************************** Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, ByVal lpString2 As String) As Long Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long Public Function AddConnection(strNewEntryName As String, strNewPhoneNumber As String, strNewCallbackNumber As String, strNewUsername As String, strNewPassword As String, strNewDomain As String) As Integer Dim lngRetCode As Long Dim lngRetLstrcpy As Long Dim lngRetHangUp As Long Dim lprasdialparams As RASDIALPARAMS95 lprasdialparams.dwSize = 1052 '在WINDOWS95/98中必須將dwSize設爲1052 '利用lstrcpy函數將字串拷貝到BYTE陣列 lngRetLstrcpy = lstrcpy(lprasdialparams.szEntryName(0), strNewEntryName) lngRetLstrcpy = lstrcpy(lprasdialparams.szPhoneNumber(0), strNewPhoneNumber) lngRetLstrcpy = lstrcpy(lprasdialparams.szCallbackNumber(0), strNewCallbackNumber) lngRetLstrcpy = lstrcpy(lprasdialparams.szUserName(0), strNewUsername) lngRetLstrcpy = lstrcpy(lprasdialparams.szPassword(0), strNewPassword) lngRetLstrcpy = lstrcpy(lprasdialparams.szDomain(0), strNewDomain) '我們使用同步通信 Screen.MousePointer = vbHourglass hRasConn = 0 ' lngRetCode = RasDial(ByVal APINULL, vbNullString, lprasdialparams, APINULL, ByVal APINULL, hRasConn) Screen.MousePointer = vbDefault '測試有沒有錯誤 If lngRetCode Then lngRetHangUp = RasHangUp(hRasConn) End If AddConnection = lngRetCode End Function Public Sub RemoveConnection(H_RasConn As Long) Call RasHangUp(hRasConn) End Sub 6.最後,編譯生成應用程式,我們就實現了在自己的應用程式中撥號上網。本程式在PWIN98,VB6.0環境下編譯通過。 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-08 17:41:12 IP:218.164.xxx.xxx 未訂閱
沒有,跟頻寬分享沒關係,我只是在弄刷卡的東西 client端的刷卡機會撥號到我的server進行確認 程式都寫好了,只是連接的地方老是要先啟動一次windows的終端機 覺得很麻煩,所以我才想說是不是我AT command少下了什麼~
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-08 17:41:37 IP:61.221.xxx.xxx 未訂閱
你也可以參考這一篇 轉貼資料 DELPHI的 【Delphi】【轉貼】用Delphi程式獲取撥號連接的動態IP位址 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33658 對了 32 Bit Delphi 深度歷險 也有範例與元件 FNGB1401.EXE http://www.vclxx.org/DELPHI/D32FREE/FNGB1401.EXE TASNotify 元件能夠測知目前 RAS 連接狀態的元件 ( 1.00 版,附原始程式碼 ),作者 : Gleb Yourchenko。 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-08 17:51:06 IP:218.164.xxx.xxx 未訂閱
看了一下,還是找不到我要的...>< 可以麻煩再指點一下嗎....
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-09 00:20:25 IP:61.64.xxx.xxx 未訂閱
你是要用數據卡 傳真 還是撥號網路 有點看不懂 你的意思 在不然寫一隻 監控程式 讀取 在送給你的c端 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-13 02:32:29 IP:203.204.xxx.xxx 未訂閱
kib57987, 您好 或許您可以參考一下turboted版主發表文章中所提到的軟體/元件,這樣就可以不用管AT Command要怎麼下了,該軟體有Modem的元件,而該元件有AutoAnswer的method。 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32745 ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-13 02:42:36 IP:218.164.xxx.xxx 未訂閱
嗯,謝謝你們, 我祇有連線傳刷卡資料而已, 不過我用AT command解決了 該怎麼給分呀....@o@
系統時間:2024-04-25 0:31:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!