Re: ListBox裡面顯示的資料有辦法直接顯示在網頁上嗎
※ 引述《fumizuki (矇面加菲獅)》之銘言:
: 要加入啊,不然 vb怎麼知道 MSComm1 是什麼東西
: 不過,MSComm的類型是控制項,是要掛在表單上的,
: 不知道 ActiveX DLL 可不可以這樣子用@@
: 如果設定加入MSComm,測試不行的話,程式開始加上這一行:
: Set MSComm1 = CreateObject("MSCommLib.MSComm")
: VB6範例:
: Sub Open()
: '如果加入使用元件不行再試試看下面這一行
: 'Set MSComm1 = CreateObject("MSCommLib.MSComm")
: '其他必要的程式碼自己再加上去
: If Not (MSComm1.PortOpen) Then
: MSComm1.PortOpen = True '開啟串列連接埠
: End If
: End Sub
: Sub Close()
: If MSComm1.PortOpen Then
: MSComm1.PortOpen = False '關閉串列連接埠
: End If
: End Sub
: Function GetData()
: GetData = MSComm1.Input
: End Function
: 網頁端範例:
: Set myobj = Server.CreateObject("MyProject.MyClass") '建立物件
: myobj.Open() '開啟連接埠
: Response.Write(myobj.GetData()) '取得資料
: myobj.Close() '關閉連接埠
: Set myobj = Nothing '釋放物件
不好意思
再請問你
你說的必要程式碼是我原本打的MSCOMM通訊項的原始程式碼嗎
然後程式編排就像你上面打的那樣嗎
我照這樣打過了
還是不能製成.DLL檔案
我是不是哪裡有打錯ㄚ
因為我要製成.DLL檔案時
然後第一排的Sub Open()
它顯示"必須是識別項"
我也看不出來哪裡出問題
再拜託高手大大你了
謝謝你
以下是我完整的MSCOMM程式碼
Option Explicit
Private Const LB_SETHORIZONTALEXTENT = &H194
'宣告一個DLL內的外部程序
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Dim TempStr As String '用於讀取暫存區資料
Dim TempBool As Boolean '判斷資料是否已讀取完畢
Private Sub Command1_Click()
'===將字串輸出,在字串的前面加上字串長度與分隔字元===
If LTrim(Text1.Text) <> "" Then
MSComm1.Output = Len(Text1.Text) & "&RFID:" & Text1.Text
Text1.Text = ""
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
End Sub
Private Sub Form_Load()
'===設定、開啟串列連接埠===
With MSComm1
.CommPort = 1 '設定串列連接埠代號
.Handshaking = comXOnXoff
.NullDiscard = True
.RThreshold = 1
If Not (.PortOpen) Then
.PortOpen = True '開啟串列連接埠
End If
End With
End Sub
Private Sub MSComm1_OnComm()
'===讀取接收暫存區中的資料===
Dim TempLong As Long
Dim MaxLength As Integer '記錄ListBox中的最大字串長度
Dim TempIndex As Integer '記錄ListBox中最長字串的索引值
If TempBool And MSComm1.CommEvent = comEvReceive Then
TempStr = MSComm1.Input
'判斷目前取得資料是否為所有資料
If Val(TempStr) + 3 = Len(TempStr) - InStr(1, TempStr, "&") Then
List1.AddItem Mid(TempStr, InStr(1, TempStr, "&") + 1), 0
TempStr = ""
MaxLength = Len(List1.List(0))
For TempLong = 0 To List1.ListCount - 1 '尋找最長字串
If Len(List1.List(TempLong)) >= MaxLength Then
TempIndex = TempLong
MaxLength = Len(List1.List(TempLong))
End If
Next TempLong
'產生一個水平捲軸
Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, _
ByVal TextWidth(List1.List(TempIndex)) / 14.8, ByVal 0&)
Else
MSComm1.RThreshold = Val(TempStr) + 20 - Len(TempStr) + _
InStr(1, TempStr, "&") '設定最小接收字元數為尚未讀取字元數
'去除字串長度與分隔字元
TempStr = Mid(TempStr, InStr(1, TempStr, "&") + 1)
TempBool = False
End If
Else
List1.AddItem TempStr + MSComm1.Input, 0
TempStr = ""
TempBool = True
MSComm1.RThreshold = 1
MaxLength = Len(List1.List(0))
For TempLong = 0 To List1.ListCount - 1
If Len(List1.List(TempLong)) >= MaxLength Then
TempIndex = TempLong
MaxLength = Len(List1.List(TempLong))
End If
Next TempLong
Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, _
ByVal TextWidth(List1.List(TempIndex)) / 14.8, ByVal 0&)
End If
End Sub
If Not (MSComm1.PortOpen) Then
MSComm1.PortOpen = True '開啟串列連接埠
End If
End Sub
拜託您了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.85.178
討論串 (同標題文章)