有沒有人會寫FAX的程式
我寫出來的可以和傳真機連線
但不會送出資料
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 1395
ClientLeft = 60
ClientTop = 345
ClientWidth = 5595
LinkTopic = "Form1"
ScaleHeight = 1395
ScaleWidth = 5595
StartUpPosition = 3 '系統預設值
Begin VB.Frame Frame2
Caption = "Frame2"
Height = 615
Left = 0
TabIndex = 4
Top = 720
Width = 5535
Begin VB.TextBox T
Height = 270
Left = 120
TabIndex = 5
Text = "Text1"
Top = 240
Width = 5295
End
End
Begin VB.Frame Frame1
Caption = "通訊連接埠"
Height = 615
Left = 2040
TabIndex = 2
Top = 0
Width = 1335
Begin VB.ComboBox Combo1
Height = 300
ItemData = "Form1.frx":0000
Left = 120
List = "Form1.frx":000A
TabIndex = 3
Top = 240
Width = 1095
End
End
Begin MSCommLib.MSComm MSComm1
Left = 5040
Top = 120
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
Handshaking = 2
RTSEnable = -1 'True
End
Begin VB.CommandButton Fax
Caption = "開始傳真"
Height = 375
Left = 4200
TabIndex = 1
Top = 120
Width = 855
End
Begin VB.TextBox FaxTel
BeginProperty Font
Name = "新細明體"
Size = 15.75
Charset = 136
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 120
TabIndex = 0
Text = "25115053"
Top = 120
Width = 1815
End
Begin VB.Shape Shape1
FillColor = &H000000C0&
FillStyle = 0 '實心
Height = 375
Left = 3600
Shape = 3 '圓形
Top = 120
Width = 495
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Combo1_Change()
MSComm1.CommPort = Combo1.Visible + 1
End Sub
Private Sub Fax_Click()
Dim Out(10240) As Byte
Out(0) = &HFF&
For FORS = 1 To 10239
Out(FORS) = 15
Next
Fax.Enabled = False
'MSComm1.Output = "AT" & vbCr
Shape1.FillColor = &HFF00&
'MSComm1.Output = "ATH1" & vbCr
'********************************************************
'&F 載入出廠之配置值
'S0 鈴聲次數進入應答模式 0=關閉
'E0 不要顯示鍵入的指令
'V1 以文字方式顯示結果碼
'Q0 使用結果碼 *AT&FS0=0E0V1Q0
MSComm1.Output = "AT&FS0=0E0V1Q0" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'
MSComm1.Output = "AT" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'I3 顯示晶片組名稱
MSComm1.Output = "ATI3" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'S7 等待遠方載波的時間
'&D3 當DTR 由ON轉OFF則重置數據機
'&K4 開始 XON/XOFF ATS7=255&D3&K4
MSComm1.Output = "ATS7=255&D1" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'X4 偵測有無撥號音
'S8 , 要等待的時間
'M1 撥號時喇叭開著 直到偵測到載波
'L1 音量 3高
MSComm1.Output = "ATX4S8=2M1L3" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'+F
'
MSComm1.Output = "AT+FCLASS=1H1" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'
MSComm1.Output = "ATH" & vbCr
DoEvents
T.Text = T.Text & MSComm1.Input
'******************************************************************
'啟動數據機,並撥電話號碼。
'MSComm1.Output = "ATDT25115053" & vbCr
'MSComm1.Output = "ATDT" & FaxTel.Text & vbCr
'設定為傳真模式 V.29 (9600 BPS FAX)
'MSComm1.Output = "+MS=V29,1,0,0" & vbCr
'DoEvents
'MSComm1.Output = "ATH1" & vbCr
'MSComm1.Output = "AT" & vbCr
'DoEvents
'T.Text = MSComm1.Input
'T.Text = ""
MSComm1.Output = "ATDT 25115053" & vbCrLf
'「AT」指令初始化連接,「D」進行撥號,[T」指定使用音調 (而不是脈衝)。
' 等待資料傳回到序列連接埠
Do
DoEvents
TT$ = MSComm1.Input
Exit Do
Loop Until InStr(TT$, "CONNECT" & vbCrLf) ' 從序列連接埠讀取 "OK" 回應資料
TT$ = ""
Do
DoEvents
TT$ = TT$ & MSComm1.Input
Exit Do
Loop Until InStr(Buffer$, "OK" & vbCrLf) '接通
'If InStr(T.Text, "NO") Then
' MsgBox ("失敗")
' GoTo erring
'End If
'Buffer$ = ""
'輸出到一個終端時必須指定 Return 鍵 (vbCr)。輸出到位元組陣列時,不需要再加一個 Return 字元。
'如果指令被正確處理,傳回的結果碼將是「OK」。檢查結果碼即可確定指令是否被正確處理。
'This entry is in "hex display mode" (see below).
'這個加入是在"16位元展示模示"(看以下)
' Log indicates one byte, 0xff , was read.
' 指示一個字元,0xff,他讀取
'In this case it is the first byte of the
'
' DIS frame from the remote machine.
'在遠方的機械
'傳送位元組陣列資料
MSComm1.Output = TT$ & vbCr
DoEvents
For FORS = 0 To 32000
MSComm1.Output = Out
DoEvents
Next
'
'如前面提到的,每傳送一行都必須以 Return 鍵 (vbCr)結束。
'在上例中,Out 被定義為位元組陣列變數:Dim Out() As Byte。假如它是字串變數,
'則應定義為:Dim Out() As String。
'您可用 OutBufferCount 屬性監看傳送緩衝區中的位元組數目。將該值設定為 0 即可清空傳送緩衝區。
' 等待資料傳回到序列連接埠
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Exit Do
Loop Until InStr(Buffer$, "OK" & vbCrLf) ' 從序列連接埠讀取 "OK" 回應資料
MSComm1.Output = "\r\nOK\r\n" & vbCr
'
MSComm1.Break = True
MSComm1.Output = " AT" & vbCr
T.Text = MSComm1.Input
erring:
'掛斷電話
MSComm1.Output = "ATH0" & vbCr
T.Text = MSComm1.Input
'
MSComm1.Output = "AT" & vbCr
T.Text = MSComm1.Input
Shape1.FillColor = 192
Fax.Enabled = True
End Sub
Private Sub Form_Load()
Combo1.ListIndex = 0
Dim PortValue As Integer
'設定或傳回通訊連接埠的代號,即屬性頁上的「通訊連接埠」。
MSComm1.CommPort = Combo1.ListIndex + 1
'在設計階段,value 可以設定成從 1 到 16 的任何數 (預設值為 1)。
'但是如果用 PortOpen 屬性開啟一個並不存在的連接埠時,
'MSComm 控制項會產生錯誤 68 (裝置無效)。
'警告 必須在開啟連接埠之前,先設定 CommPort 屬性。
'設定或傳回連線速率、同位檢查、資料位元與停止位
'MSComm1.Settings = "9600,N,8,1"
'Settings 屬性可以用來指定傳輸速率、同位檢查、資料位元數和停止位元數。
'按照預設值,傳輸速率將被設定為 9600。同位檢查是用來指定資料是否要進行
'檢查。通常是不需使用,所以設定為「N」。資料位元數指定一個資料區塊的
'位元數。停止位元則是用來指示資料區塊是否已接收完畢。
' 告訴控制項當使用 Input 時,讀取整個暫存區
'MSComm1.InputLen = 0
'設定或傳回通訊埠的狀態 (開啟或關閉)
MSComm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
' 關閉序列連接埠
MSComm1.PortOpen = False
End Sub