999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
用VB開發(fā)通信軟件的技巧
中華工控網(wǎng)
收藏本文     查看收藏
用VB5.0 開 發(fā) 通 信 軟 件 的 技 巧 <BR> 河 北 省 科 學(xué) 院 數(shù) 學(xué) 研 究 所 余 益 光 <BR> E-mail:mailto:hkxtsg@public.sj.he.cn</P><P> 一 自 己 開 發(fā) 通 信 軟 件 的 必 要 性: <BR> ---- 隨 著 計(jì) 算 機(jī) 應(yīng) 用 領(lǐng) 域 的 不 斷 擴(kuò) 展, 計(jì) 算 機(jī) 之 間 的 遠(yuǎn) 程 通 信 用 得 越 來 越 廣 泛. 進(jìn) 行 計(jì) 算 機(jī) 通 信 需 要 調(diào) 制 解 調(diào) 器(modem), 電 話 線 及 通 信 軟 件. 盡 管 市 面 上 有 許 多 商 品 通 信 軟 件, 但 是 在 許 方 情 況 下 商 品 通 信 軟 件 并 不 能 滿 足 實(shí) 際 工 作 的 需 要. 這 是 因 為 通 用 的 通 信 軟 件 雖 然 能 發(fā) 送 和 接 收 文 件, 但 有 些 時(shí) 侯 是 不 適 用 的. 例 如 我 們 在 開 發(fā) 一 個(gè)EDI( 電 子 數(shù) 據(jù) 交 換) 應(yīng) 用 系 統(tǒng) 時(shí), 就 需 要 把 接 收 到 的 某 個(gè) 單 證 直 接 地 自 動 地 放 到 一 個(gè) 數(shù) 據(jù) 庫 中, 作 為 一 條 記 錄。 這 種 情 況 下 采 用 通 用 的 通 信 軟 件 就 不 行 了, 需 要 開 發(fā) 自 己 專 用 的 通 信 軟 件。 <BR> ---- 過 去, 開 發(fā) 通 信 軟 件 對 于 一 般 的 應(yīng) 用 軟 件 開 發(fā) 人 員 來 說 是 比 較 困 難 的。 而 現(xiàn) 在 這 件 事 已 經(jīng) 變 得 容 易 多 了。 本 文 介 紹 如 何 利 用VB5.0 和MSCOMM 控 件 開 發(fā) 通 信 軟 件。 </P><P> ---- 要 想 自 己 開 發(fā) 通 信 軟 件, 除 了 要 掌 握VB5.0 的 基 本 編 程 語 言 以 外, 還 需 知 道 一 些 微 機(jī) 通 信 的 基 本 原 理。 如 有 關(guān) 串 行 端 口 及 調(diào) 制 解 調(diào) 器 的 基 本 知 識, 調(diào) 制 解 調(diào) 器 的 使 用 手 冊 及AT 命 令 集 等。 這 在 許 多 書 中 都 可 以 找 到。 本 文 不 再 敘 述。 </P><P> 二 有 關(guān) 預(yù) 備 知 識 <BR> ---- 在 PC 機(jī) 串 行 端 口 與 調(diào) 制 解 調(diào) 器 進(jìn) 行 連 接 時(shí), 有 十 幾 根 線 進(jìn) 行 信 號 傳 輸。 對 于 用MSCOMM 控 件 編 制 通 信 軟 件 來 說, 只 需 了 解 以 下 五 根 線 的 代 號 及 作 用。 以 下 五 根 線 的 高 電 平/ 低 電 平 狀 態(tài) 分 別 對 應(yīng) MScomm 控 件 的 相 應(yīng) 屬 性 的 True/False 值。 <BR> ---- (1) DTR 線:PC 發(fā) 往MODEM, 表 示 PC 機(jī) 是 否 已 準(zhǔn) 備 好。 <BR> ---- (2) RTS 線:PC 發(fā) 往MODEM, 表 示 PC 機(jī) 是 否 允 許modem 發(fā) 回 數(shù) 據(jù). <BR> ---- (3) DSR 線: MODEM 發(fā) 往PC, 表 示MODEM 是 否 已 做 好 操 作 準(zhǔn) 備 <BR> ---- (4) CTS 線: MODEM 發(fā) 往PC, 表 示 MODEM 是 否 允 許 發(fā) 送 數(shù) 據(jù) <BR> ---- (5) CD 線: MODEM 發(fā) 往PC, 表 示 MOEDM 已 經(jīng) 與 呼 叫 的 遠(yuǎn) 方 MODEM 處 于 連 結(jié) 狀 態(tài) </P><P> 三 MSCOMM 控 件 的 屬 性 及 事 件 <BR> ---- VB5.0 所 帶 的 通 信 控 件 MSCOMM 易 學(xué) 易 用。 它 只 有 約30 個(gè) 屬 性 和 事 件。 可 以 從VB5.0 的 聯(lián) 機(jī) 幫 助 中 找 到 它 的 全 部 資 料。 本 文 簡 述 它 的 主 要 屬 性 及 事 件, 并 加 已 歸 類 整 理。 以 下 用 MSCOMM1 表 示 在 窗 體 上 設(shè) 置 的 一 個(gè) MSCOMM 控 件 的 名 稱 <BR> ---- ( 一) 通 信 參 數(shù) 設(shè) 置 </P><P> ---- (1) CommPort 屬 性 <BR> ---- 語 法: MSCOMM1.CommPort [=value] <BR> ---- 作 用: 設(shè) 置 或 返 回 聯(lián) 接 MODEM 的 串 口 的 編 號。 <BR> ---- 值: 用1,2, ... 表 示 串 口 COM1,COM2 .... </P><P> ---- (2) Settings 屬 性 <BR> ---- 語 法: MSCOMM1.Settings [=value] <BR> ---- 作 用: 設(shè) 置 或 返 回 通 信 參 數(shù)。 <BR> ---- 值: String 型。 例 入 用 "19200,N,8,1" 表 示 傳 輸 速 率 為19200 bps, 沒 有 奇 偶 校 驗(yàn) 位,8 位 數(shù) 據(jù) 位,1 位 停 止 位。 </P><P> ---- (3) Handshaking 屬 性 <BR> ---- 語 法: MSCOMM1.Handshaking [=value] <BR> ---- 作 用 與 值: 設(shè) 置 或 返 回 硬 件 握 手 協(xié) 議。 指 的 是PC 機(jī)MODEM 之 間 為 了 控 制 流 速 而 約 定 的 內(nèi) 部 協(xié) 議。 <BR> ---- 0 沒 有 握 手 協(xié) 議。 不 考 慮 流 量 控 制。 <BR> ---- 1 XON/XOFF。 即 在 數(shù) 據(jù) 流 中 嵌 如 控 制 苻 來 進(jìn) 行 流 控。 <BR> ---- 2 RTS/CTS 。 既 由 信 號 線RTS/CTS 自 動 進(jìn) 行 流 量 控 制。 <BR> ---- 3 兩 者 皆 可。 <BR> ---- 注: 實(shí) 踐 中 我 們 發(fā) 現(xiàn) 選 用 2( 即RTS/CTS) 是 很 方 便 的。 </P><P> ---- ( 二) 打 開/ 關(guān) 閉 端 口 </P><P> ---- (4) PortOpen 屬 性 <BR> ---- 語 法: MSCOMM1.PortOpen [=value] <BR> ---- 作 用: 打 開 或 關(guān) 閉 端 口。 <BR> ---- 值: Boolean 型。 設(shè) 為 True/False 可 以 打 開/ 關(guān) 閉 端 口。 </P><P> ---- ( 三) 發(fā) 送 數(shù) 據(jù) </P><P> ---- (5) OutBufferSize 屬 性 <BR> ---- 語 法: MSCOMM1.OutBufferSize [=value] <BR> ---- 作 用: 設(shè) 置 或 返 回 傳 輸 緩 沖 區(qū) 大 小。 <BR> ---- 值: Integer 型。 傳 輸 緩 沖 區(qū) 的 字 節(jié) 數(shù)。 例 如 可 選 1024 。 </P><P> ---- (6) OutPut 屬 性 <BR> ---- 語 法: MSCOMM1.OutPut [=Variant] <BR> ---- 作 用: 向 傳 輸 緩 沖 區(qū) 寫 數(shù) 據(jù) 流。 <BR> ---- 值: Variant 型 變 量。 <BR> ---- 注: 傳 輸 文 本 數(shù) 據(jù) 時(shí), 應(yīng) 將 String 型 數(shù) 據(jù) 放 入 Variant 變 量, 傳 輸 二 進(jìn) 制 數(shù) 據(jù)( 即 按 字 節(jié)) 時(shí), 應(yīng) 將 Byte 型 數(shù) 組 數(shù) 據(jù) 放 入 Variant 變 量 </P><P> ---- ( 四) 接 收 數(shù) 據(jù) </P><P> ---- (7) InBufferSize 屬 性 <BR> ---- 語 法: MSCOMM1.InBufferSize [=value] <BR> ---- 作 用: 設(shè) 置 或 返 回 接 收 緩 沖 區(qū) 大 小。 <BR> ---- 值: Integer 型。 接 收 緩 沖 區(qū) 的 字 節(jié) 數(shù)。 例 如 可 選 1024 。 </P><P> ---- (8) InputMode 屬 性 <BR> ---- 語 法: MSCOMM1.InputMode [=value] <BR> ---- 作 用: 設(shè) 置 或 返 回 接 收 數(shù) 據(jù) 的 數(shù) 據(jù) 類 型。 <BR> ---- 值: 0 用Input 屬 性 接 收 文 本 型 數(shù) 據(jù)。 <BR> ---- 1 用Input 屬 性 接 收 二 進(jìn) 制 數(shù) 據(jù)。 </P><P> ---- (9) InBufferCount 屬 性 <BR> ---- 語 法: MSCOMM1.InBufferCount [=value] <BR> ---- 作 用: 返 回 接 收 緩 沖 區(qū) 中 已 傳 到 但 還 未 取 走 的 字 符 個(gè) 數(shù)。 <BR> ---- 值: Integer 型。 </P><P> ---- (10) Input 屬 性 <BR> ---- 語 法: MSCOMM1.Input [=Variant] <BR> ---- 作 用: 將 接 收 緩 沖 區(qū) 中 收 到 的 數(shù) 據(jù) 讀 入 變 量。 <BR> ---- 值: Variant 型 變 量。 <BR> ---- 注: 當(dāng)InputMode 屬 性 值 為 0( 文 本 模 式) 時(shí), 變 量 中 含 String 型 數(shù) 據(jù)。 <BR> ---- 當(dāng)InputMode 屬 性 值 為 1( 二 進(jìn) 制 模 式) 時(shí), 變 量 中 含 Byte 型 數(shù) 組 數(shù) 據(jù)。 </P><P> ---- ( 五) 狀 態(tài) 控 制 </P><P> ---- (11) DTREnabled 屬 性 <BR> ---- (12) RTSEnabled 屬 性 <BR> ---- (13) DSRHolding 屬 性 <BR> ---- (14) CTSHolding 屬 性 <BR> ---- (15) CDHolding 屬 性 </P><P> ---- 以 上 五 個(gè) 屬 性 即 如 二 所 述, 均 取 值 TRUE/FALSE, 用 于 讀 取 或 控 制 pc 機(jī) 與 modem 之 間 的 交 互 狀 態(tài)。 需 運(yùn) 用 好。 例 如, 應(yīng) 在 讀 取 到 DSRHolding 屬 性 值 為TRUE 時(shí) 再 向 MODEM 發(fā) 出 命 令。 應(yīng) 當(dāng) 在 載 波 檢 測 到 以 后(CDHolding 屬 性 為 TRUE) 時(shí) 再 向MODEM 發(fā) 送 數(shù) 據(jù)。 </P><P> ---- ( 六) 事 件 </P><P> ---- MSCOMM 控 件 把 實(shí) 際 上 是 十 七 個(gè) 事 件 歸 并 為 一 個(gè) 事 件 OnComm, 用 屬 性 CommEvent 的 十 七 個(gè) 值 來 區(qū) 分 不 同 的 觸 發(fā) 時(shí) 機(jī)。 主 要 有 以 下 幾 個(gè): </P><P> ---- (1)CommEvent=1 時(shí): 傳 輸 緩 沖 區(qū) 中 的 字 符 個(gè) 數(shù) 已 少 于 Sthreshold( 可 設(shè) 置 的 屬 性 值) 個(gè). <BR> ---- (2)CommEvent=2 時(shí): 接 收 緩 沖 區(qū) 中 收 到 hreshold( 可 設(shè) 置 的 屬 性 值) 個(gè) 個(gè) 字 符. 利 用 此 事 件 可 編 寫 接 收 數(shù) 據(jù) 的 過 程。 <BR> ---- (3)CommEvent=3 時(shí): CTS 線 發(fā) 生 變 化 . <BR> ---- (4)CommEvent=4 時(shí): DSR 線 發(fā) 生 變 化 . <BR> ---- (5)CommEvent=5 時(shí): CD 線 發(fā) 生 變 化 . <BR> ---- (6)CommEvent=6 時(shí): 檢 測 到 振 鈴 信 號 . </P><P> ---- 另 外 十 個(gè) 情 況 是 可 能 發(fā) 生 的 各 種 通 信 錯(cuò) 誤 時(shí) 觸 發(fā)。 可 參 看 有 關(guān) 資 料. </P><P> 四 通 信 軟 件 參 數(shù) 設(shè) 置 <BR> ---- 在 自 己 編 寫 的 通 信 軟 件 中, 應(yīng) 包 含 進(jìn) 行 通 信 參 數(shù) 設(shè) 置 的 功 能。 主 要 就 是 可 以 設(shè) 置 端 口 號, 波 特 率, 數(shù) 據(jù) 位, 停 止 位, 奇 偶 校 驗(yàn) 位 及 設(shè) 置 硬 件 握 手 協(xié) 議。 <BR> ---- 可 在 一 個(gè) 窗 體 上 用 下 拉 列 表 框, 選 擇 鈕 等 由 用 戶 來 選 擇! 保 存》 時(shí), 利 用VB5.0 的 Settings 函 數(shù) 將 這 些 參 數(shù) 存 儲 在WINDOWS 95 的 系 統(tǒng) 注 冊 表 中。 每 次 運(yùn) 行 該 軟 件 時(shí), 先 用 GetSettings 函 數(shù) 調(diào) 出 這 些 參 數(shù), 并 對Commport,Settings,Handshaking 等 屬 性 賦 值, 來 進(jìn) 行 通 信 參 數(shù) 設(shè) 置。 </P><P> 五 打 開 通 信 端 口 <BR> ---- 在 編 寫 的 通 信 軟 件 的 主 窗 體 上, 可 以 安 排 一 個(gè) 打 開/ 關(guān) 閉 端 口 的 菜 單 項(xiàng) 或 圖 形 按 鈕。 在 打 開 端 口 時(shí), 可 向 MODEM 發(fā) 出 命 令, 進(jìn) 行 MODEM 參 數(shù) 設(shè) 置。 可 以 象 下 面 這 樣 來 編 程: <BR> '(1)打開/關(guān)閉端口<BR> MSComm1.PORTOPEN = Not MSComm1.PORTOPEN<BR> '(2)向 MODEM 發(fā)出 DTR(已準(zhǔn)備好) 信號-----<BR> OpenFlag = MSComm1.PORTOPEN<BR> If OpenFlag Then<BR> MSComm1.DTREnable = True<BR> Else<BR> MSComm1.DTREnable = False<BR> End If<BR> '(3)打開時(shí)向 MODEM 發(fā)出一些命令來設(shè)置參數(shù) <BR> 'S0=n (n>=1)自動應(yīng)答. n為響鈴次數(shù)<BR> 'E0/E1 關(guān)閉/打開命令字符回應(yīng)<BR> 'Q0/Q1 modem返回/不返回結(jié)果碼<BR> 'M0/M1 關(guān)閉/打開MODEM揚(yáng)聲器.<BR> If OpenFlag Then<BR> L1:<BR> If MSComm1.CTSHolding Then<BR> Outstring = "AT S0=1 E1 Q0 M0 " + Chr(13)<BR> MSComm1.Output = Outstring<BR> GoTo LL<BR> Else<BR> GoTo L1<BR> End If<BR> End If<BR> '-----<BR> LL: ...</P><P> ---- 也 可 以 安 排 一 些 可 變 換 顏 色 的 指 示 燈 來 代 表 端 口 打 開 狀 態(tài),CD 線 狀 態(tài) 等, 這 樣 更 形 象 生 動。 <BR> 六 撥 號 <BR> ---- 進(jìn) 行 撥 號 需 向 MODEM 發(fā) 出 ATDT 命 令。 可 用 如 下 語 句: <BR> ---- cc = "ATDT " + Trim(Text1.Text) + Chr(13) <BR> ---- MSComm1.Output = cc <BR> ---- 其 中 TEXT1 是 窗 體 上 讓 用 戶 輸 入 電 話 號 的 文 本 框。 </P><P> ---- 為 了 使 程 序 功 能 更 強(qiáng) 一 些, 可 以 增 加< 電 話 號 碼 簿 管 理>, 可 以 增 加, 修 改, 刪 除, 查 詢 電 話 號 碼。 這 與 一 般 的 數(shù) 據(jù) 庫 應(yīng) 用 程 序 是 一 樣 的。 </P><P> 七 發(fā) 送 文 件 <BR> ---- 撥 號 以 后, 程 序 要 循 環(huán) 等 待 并 隨 時(shí) 判 定 是 否 接 通。 如 果 MODEM 向 PC 的 回 應(yīng) 字 符 串 中 含 有 "Connect " 或 CDHolding 屬 性 值 變 為 True ( 檢 測 出 載 波), 則 表 示 已 與 遠(yuǎn) 方MODEM 連 機(jī) 了。 這 時(shí) 就 可 以 發(fā) 送 文 件 了。 <BR> ---- 發(fā) 送 文 件 開 始 以 前, 可 打 開 一 個(gè) 顯 示 發(fā) 送 信 息 的 窗 口。 可 在 此 窗 口 上 顯 示 要 發(fā) 送 的 文 件 名, 總 長 度, 已 發(fā) 送 長 度 等 信 息。 </P><P> ---- 設(shè) 置 以 下 全 局 變 量, 存 放 標(biāo) 志 字 符 串, 在 發(fā) 送 及 接 收 程 序 中 均 使 用。 </P><P> S_FILENAME = "FILENAME" + Chr(5) + Chr(13) + Chr(10) <BR> S_FILELEN = "FILELEN " + Chr(5) + Chr(13) + Chr(10) <BR> S_FILESTAR = "FILESTAR" + Chr(5) + Chr(13) + Chr(10) </P><P> ---- (1) 打 開 文 件: <BR> ---- 要 想 把 一 個(gè) 文 件 的 全 部 字 節(jié) 都 傳 送, 需 以 二 進(jìn) 制 方 式 打 開 文 件。 可 用 如 下 語 句 <BR> ---- ' 得 到 下 一 個(gè) 可 用 的 文 件 號, 放 在 整 型 變 量 hSend <BR> ---- hSend = FreeFile <BR> ---- ' 打 開 文 件 <BR> ---- Open SENDFN For Binary Access Read As hSend <BR> ---- LF& = LOF(hSend) ' 文 件 長 度 為 LF& <BR> ---- 其 中 變 量 SENDFN 中 含 有 由 用 戶 選 定 的 要 傳 送 的 文 件 名。 </P><P> ---- (2) 發(fā) 送 文 件 名, 文 件 長 度, 文 件 開 始 等 信 息 字 符 串。 <BR> ---- 例 如, 我 們 設(shè) 計(jì) 成 如 下: </P><P> DIM VARC AS VARIANT<BR> VARC = S_FILENAME<BR> MSComm1.Output = VARC '發(fā)出 "FILENAME" 提示字串<BR> VARC = SENDFN + Chr(13) + Chr(10)<BR> TXRJ.MSComm1.Output = VARC '發(fā)出文件名<BR> VARC = S_FILELEN<BR> MSComm1.Output = VARC '發(fā)出 "FILELEN" 提示字串<BR> VARC = Trim(Str(LF&)) + Chr(13) + Chr(10)<BR> MSComm1.Output = VARC '發(fā)出文件寬度<BR> VARC = S_FILESTAR '發(fā)出 "FILESTART" 提示字串,表示下面文件開始。<BR> MSComm1.Output = VARC<BR> 然后程序倒計(jì)時(shí),在發(fā)送信息窗口顯示 8,7,6,5,4,3,2,1,0 .</P><P> ---- (3) 發(fā) 送 文 件 內(nèi) 容 <BR> ---- 用 GET 語 句 從 文 件 讀 字 節(jié),用 OUTPUT 屬 性 發(fā) 送。 <BR> DIM SENDARR() AS BYTE '定義字節(jié)型數(shù)組<BR> Sum = 0 '記錄累計(jì)發(fā)送的字節(jié)數(shù)<BR> BSIZE = MSComm1.OutBufferSize '每次發(fā)送的塊大小 <BR> ReDim SENDARR(1 To BSIZE)<BR> ' 循環(huán)發(fā)送<BR> Do While Sum < LF& <BR> If LF& - Loc(hSend) < BSIZE Then<BR> BSIZE = LF& - Loc(hSend) <BR> ReDim SENDARR(1 To BSIZE)<BR> End If<BR> Get hSend, , SENDARR '從文件取字節(jié)放入字節(jié)數(shù)組<BR> SENDVAR = SENDARR '轉(zhuǎn)放到 Variant 型變量<BR> ' 當(dāng)CTS線及CD線為高電平時(shí)才可發(fā)送,否則需等待。<BR> T = Timer + 60<BR> L:<BR> If MSComm1.CTSHolding And MSComm1.CDHolding Then <BR> MSComm1.Output = SENDVAR '發(fā)送<BR> Sum = Sum + BSIZE '累加計(jì)數(shù)<BR> Label6.Caption = Str(Sum) '顯示在發(fā)送窗口上<BR> Else<BR> If Timer < T Then<BR> GoTo L '循環(huán)等待<BR> Else<BR> GoTo CLOSEFILE '等待時(shí)間超過 60秒則退出<BR> End If<BR> End If<BR> ' 等待系統(tǒng)處理完<BR> Do<BR> RET = DoEvents()<BR> Loop Until MSComm1.OutBufferCount = 0<BR> Loop '循環(huán)語句結(jié)尾</P><P> ---- 文 件 發(fā) 送 完 畢 以 后, 關(guān) 閉 該 文 件。 并 關(guān) 閉 發(fā) 送 文 件 信 息 窗 口。 <BR> 八 接 收 MODEM 回 送 的 信 息 及 接 收 文 件 <BR> ---- ( 一) 設(shè) 計(jì) 要 點(diǎn): 我 們 是 如 下 進(jìn) 行 設(shè) 計(jì) 的。 <BR> 在 主 窗 口 上 設(shè) 一 個(gè) 多 行 顯 示 的 文 本 框, 用 來 顯 示 接 收 到 的 所 有 文 本 類 型 信 息。 </P><P> 建 立< 收 件 箱> 。 實(shí) 際 上 是 一 個(gè) 數(shù) 據(jù) 庫 中 的 一 個(gè) 表. 包 含 收 件 日 期, 文 件 名, 文 件 長 度, 序 號 等 字 段。 <BR> ,li> 利 用 事 件 觸 發(fā) 機(jī) 制 來 執(zhí) 行 接 收 數(shù) 據(jù) 的 過 程。 即 編 寫 mscomm1 控 件 的OnCOMM 事 件 的 處 理 程 序。 </P><P> 按 以 下 方 法 來 改 變 輸 入 模 式 屬 性(InputMode) 的 值: 通 常 使InputMode 屬 性 為 文 本 模 式。 當(dāng) 發(fā) 現(xiàn) 接 收 到 的 字 符 串 中 有 "FILESTAR" + Chr(5) + Chr(13) + Chr(10), 按 本 軟 件 規(guī) 定 表 示 傳 送 的 文 件 內(nèi) 容 將 開 始, 則 將InputMode 屬 性 改 為 二 進(jìn) 制 模 式。 當(dāng) 文 件 內(nèi) 容 接 收 完( 由 接 收 的 字 節(jié) 數(shù) 判 斷) 再 將InputMode 屬 性 改 為 文 本 模 式。 </P><P> 利 用 本 軟 件 設(shè) 計(jì) 的 標(biāo) 志 字 符 串( 見 七) 來 控 制 進(jìn) 程, 在 發(fā) 送 及 接 收 程 序 中 均 使 用。 <BR> ---- ( 二) MSCOMM1 控 件 的 OnCOMM 事 件 的 的 處 理 程 序 <BR> Private Static Sub MSComm1_OnComm() <BR> Select Case MSComm1.CommEvent<BR> Case comEvReceive <BR> '接收緩沖區(qū)收到Rthreshold個(gè)字符時(shí)觸發(fā)<BR> Dim VARC As Variant<BR> Dim N As Long<BR> Dim SJARR() As Byte<BR> '<BR> N = MSComm1.InBufferCount '接收緩沖區(qū)字符總數(shù)<BR> If MSComm1.InputMode = 0 Then<BR> '當(dāng)輸入模式為文本模式時(shí),將收到的數(shù)據(jù)放到字符串變量。<BR> MSComm1.InputLen = 0<BR> VARC = Space(N)<BR> VARC = MSComm1.Input <BR> Else<BR> '當(dāng)輸入模式為二進(jìn)制模式時(shí),將收到的數(shù)據(jù)放到字節(jié)數(shù)組。<BR> ReDim SJARR(1 To N)<BR> VARC = ARR<BR> MSComm1.InputLen = N<BR> VARC = MSComm1.Input<BR> End If<BR> ShowDATA TextTerm, N, VARC <BR> '調(diào)接收數(shù)據(jù)處理過程Showdata<BR> End Select<BR> End Sub</P><P> ---- (三) 接 收 數(shù) 據(jù) 處 理 過 程 ShowData <BR> Public Static Sub ShowData(Term As Control, _<BR> N As Long, DATA As Variant)<BR> '參數(shù):Term (主窗體上的文本框,用于顯示接受數(shù)據(jù))<BR> ' N 為本次接收到的字節(jié)數(shù)<BR> ' DATA (接收到的數(shù)據(jù).Variant型 )<BR> (變量定義部分:略)<BR> '(一) 非文件傳輸情形(接收的是字符串)<BR> If not mscomm1.InputMode= 0 Then<BR> GoTo L2<BR> End If<BR> '(1)把新接收的字符數(shù)據(jù)放到文本框TERM末尾<BR> Term.SelStart = Len(Term.Text)<BR> Term.SelLength = 0<BR> Term.SelText = DATA <BR> '(2)未找到文件傳輸開始標(biāo)志就結(jié)束此過程----<BR> W_FILESTAR = InStr(1, Term.Text, S_FILESTAR, 0)<BR> If W_FILESTAR = 0 Then<BR> Exit Sub<BR> End If<BR> '(3)以下為找到文件傳輸開始標(biāo)志的情況<BR> '(3-1) 找文件名及文件長度<BR> W_FILENAME = InStr(1, Term.Text, S_FILENAME, 0)<BR> W_FILELEN = InStr(1, Term.Text, S_FILELEN, 0)<BR> FN = Mid(Term.Text, W_FILENAME + 11, (W_FILELEN - W_FILENAME - 13))<BR> ' (3-2)打開接收文件<BR> hJS = FreeFile<BR> JSFN = Pathc + "\SJFILE\S" + Trim(Str(NO)) + "_" + FN<BR> Open JSFN For Binary Access Write As hJS<BR> '(3-3)收件箱增加新記錄 <BR> W_FILENAME = InStr(1, Term.Text, S_FILENAME, 0)<BR> W_FILELEN = InStr(1, Term.Text, S_FILELEN, 0)<BR> FN = Mid(Term.Text, W_FILENAME + 11, (W_FILELEN - 1) - (W_FILENAME + 11))<BR> FL = Mid(Term.Text, W_FILELEN + 11, W_FILESTAR - (W_FILELEN + 10))<BR> SENDLEN = Val(FL)<BR> '應(yīng)收總字節(jié)數(shù)SENDLEN<BR> '以下SJRS是已打開的收件箱對應(yīng)的記錄集型變量<BR> SJRS.AddNew '增加一新記錄<BR> SJRS!SJRQ = Now '寫入收件日期<BR> SJRS!SJFILE = FN '寫入收件的文件名<BR> SJRS!SJLEN = Val(FL) '寫入收件的長度<BR> SJRS!FILENO = NO '寫入收件的序號<BR> '(3-4)顯示文件接收窗口<BR> JSLEN = 0<BR> TXINPUT.Show<BR> '(3-5)改變輸入模式屬性 InputMode為二進(jìn)制模式<BR> TXRJ.MSComm1.InputMode = comInputModeBinary<BR> '(7)等待幾秒, 顯示 8 7 6 5 4 3 2 1 0<BR> Exit Sub<BR> '(二)文件傳輸狀態(tài)處理------------<BR> L2:<BR> ReDim JSARR(0 To N - 1)<BR> JSARR = DATA '將字節(jié)流放入字節(jié)型數(shù)組<BR> '將字節(jié)型數(shù)組中的數(shù)據(jù)寫入已打開的接收文件<BR> Put hJS, , JSARR<BR> JSLEN=JSLEN+N ’本次已累計(jì)收到的字節(jié)數(shù)<BR> ' 已收字節(jié)數(shù)與文件總長相比較<BR> If JSLEN < SENDLEN Then<BR> Exit Sub<BR> End If<BR> ' 轉(zhuǎn)此為文件傳輸已結(jié)束------<BR> '關(guān)閉接收文件<BR> Close hJS<BR> '提交收件箱表的新增記錄<BR> SJRS.Update<BR> '修改文本顯示<BR> W_FILENAME = InStr(1, Term.Text, S_FILENAME, 0)<BR> Term.SelStart = W_FILENAME - 1<BR> Term.SelLength = Len(Term.Text)<BR> Term.SelText = ""<BR> FL = "文件" + FN + "接收結(jié)束" + Chr(13) + Chr(10)<BR> Term.Text = Term.Text & FL<BR> '關(guān)閉收件窗口<BR> Unload TXINPUT<BR> '改變 InputMode屬性為文本模式<BR> TXRJ.MSComm1.InputMode = 0 <BR> Exit Sub<BR> End Sub</P><P> ---- 以 上 以 發(fā) 送 和 接 收 文 件 為 例 介 紹 了 我 們 是 如 何 使 用VB5.0 及MSCOMM 控 件 來 開 發(fā) 自 己 的 的 通 信 軟 件 的。 掌 握 了 以 上 基 本 技 術(shù), 就 可 以 稍 加 改 變 來 開 發(fā) 自 己 的 各 種 專 用 通 信 軟 件。 例 如 發(fā) 送 數(shù) 據(jù) 庫 的 一 條 記 錄, 并 使 接 收 方 把 接 收 到 的 數(shù) 據(jù) 也 放 在 數(shù) 據(jù) 庫 中。 也 可 以 進(jìn) 行 數(shù) 據(jù) 加 密/ 解 密 傳 輸 等。 總 之, 學(xué) 習(xí) 怎 樣 使 用VB5.0 及MSCOMM 控 件 來 開 發(fā) 自 己 的 的 通 信 軟 件 是 十 分 有 用 的。 <BR> ---- 附 注: 本 軟 件 運(yùn) 行 環(huán) 境 </P><P> 硬 件 環(huán) 境:CPU 為486 以 上,16MB 以 上 內(nèi) 存。 </P><P> 軟 件 環(huán) 境:WIN95 或WIN98 或WINDOWS ─ ─NT。 <BR> </P><P>
 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 中華工控網(wǎng)
聯(lián) 系 人: 客服中心
電  話: 0755-26546361
傳  真: 0755-26585268
地  址: 深圳市南山區(qū)創(chuàng)業(yè)路現(xiàn)代城華庭1棟6A
郵  編: 518054
主  頁:
 
該廠商相關(guān)技術(shù)文摘:
智能儀器儀表的發(fā)展特點(diǎn)與前景分析
電動機(jī)性能虛擬儀器測試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
視頻監(jiān)控護(hù)航高鐵安全運(yùn)營
基于PLC,觸摸屏及變頻器對吹膜機(jī)的改造
永宏P(guān)LC應(yīng)用于自助圖書借還終端機(jī)
基于永宏P(guān)LC的GSM通訊原理及其應(yīng)用
改善汽車生態(tài)學(xué)、安全性和舒適性,四大測試分析是關(guān)鍵
改善汽車生態(tài)學(xué)、安全性和舒適性,四大測試分析是關(guān)鍵
數(shù)控技術(shù)的發(fā)展趨勢及產(chǎn)業(yè)化
數(shù)控技術(shù)發(fā)展戰(zhàn)略與發(fā)展途徑的思考
用Energid 的軟件進(jìn)行機(jī)器人的抓取和操作
如何借助RFID技術(shù)升級企業(yè)信息管理水平
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費(fèi)注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved