請教在 VFP 中使用 winsock 控制項的問題

2021-09-30 08:44:39 字數 1725 閱讀 3395

我在vfp中用winsock控制項開發乙個與微控制器通訊的程式,接收微控制器中儲存的資料。該控制項的dataarrival事件中主要**

但發現微控制器發來的資料中凡ascii碼小於128的都可正常接收,大於128的字元如果成對出現(例如漢字),也可以正常接收。但如果不成對就會出現異常,例如微控制器發出的是 chr(165) + chr(3), 實際收到的卻是0x3f。不僅不對還丟失了乙個字元。如果是一串字元,凡不是成對出現的ascii碼大於128的均被丟失。我修改getdata第二個引數無論是8還是17,或者是其它任何值,均無作用。請問能有辦法解決嗎?有個某人重新做了個winsock,可以免除這種情況,明天發給你

當傳送ascii碼大於128的控制符無法傳送的問題 。

如果ascii碼大於128用createbinary函式轉換就可以傳送了。

我現在主要是接收不到不成對出現的 ascii 碼大於128的字元。例如微控制器發出的是 chr(165) + chr(3), 實際收到的卻是0x3f。不僅不對還丟失了乙個字元。還真沒試過這種,你試試用tcp的除錯軟體看能不能接到完整的字元

我個人認為是vfp在與控制項傳遞資料時對收到的資料內部自動做了**頁轉換造成的。

vfp幫助中是這樣說的:activex 控制項和 ole 物件通過 vt_ui1 型別的陣列將二進位制資料傳遞給 visual foxpro後。visual foxpro 自動將它轉換為 visual foxpro 字串的形式。

我想這說的控制項的函式返回值或屬性返回值。不幸的是,傳址返回資料如果型別不是數值型依然會發生**轉換。

如果你一定要用vfp來傳這樣的資料,要用數值型別的變數來接收資料是可以的,但這時又來了乙個問題,就是vfp會自動從接收資料緩衝區中以4位元組來接收,且小於4位元組時getdata指令將不被執行。這樣實際操作時的問題是,如果bytestotal的值不是4的整數倍,則餘數字節會保留在接收緩衝區內,與下一次接收到資料合併到一起。例如,如果接收到是7個位元組,那麼用getdata(@r)(前面要用r=0)後可以取出4個位元組,再用一次getdata(@r)則什麼都沒做,剩下的3個位元組還會保留在接收緩衝區中,但下次再來資料這3個位元組是不會丟失的,而是和新資料合併在一起,bytestotal的值也是新資料的位元組數加3。假定你的資料傳是永不停止的,那就可以自己在處理接收資料時分開每次接收的資料;若資料是間歇性接收的,且不能保證收到的資料位元組數是4的整數倍,就真的不好辦了,因為會有小於4的那幾個位元組要長時間無法取出處理。

不知我說明白了沒有。

如果樓上分析正確的話,試試用 17 作為 getdata 的接受資料型別引數,並在呼叫 getdata 前用 comarray(winsock控制項名, 1000) 設定為位元組陣列不做轉換。

這個我試了,也不行啊。dkfdtf能不能寫乙個完整的示例出來啊,有關這個問題困擾我很久了。

如果哪位大俠很好的解決了這個問題,我可以另外開貼給分的,呵呵,請大家多給些意見吧!

在我以前用winsock控制項時,並未感覺到有樓主出現的現象。只要資料符合文字檔案格式,就都可正確的接收。

但該控制項無法處理二進位制資料,比如 chr(0)。所以也就放棄了對該控制項的使用

本人做過乙個簡單的藥店管理系統,其實很多時候使用者也不知道他們想要的是個什麼東西,等你做好了才說這裡不行,那裡不行,非常讓人頭疼。無休止的更改,直到你筋疲力盡。

建議你你找乙個成功的醫藥管理軟體用用看看,然後再做自己的。

老天,不要編錯了會不會賣錯藥給客戶?我以前老家就有過這樣乙個笑話(人救活了,才敢說笑話)

有乙個人到賣藥店那裡說要買打蟲的藥,那藥店就給他包了給豬打的藥,結果不曾想是人吃的,就搞出了**煩.

在中使用SQLDMO

曾幾何時,夥伴們為的公升級傷透了腦筋.往往程式的公升級趕不上資料庫的公升級 版本控制的好,這也許不是什麼問題,但對於很大一部分中國公司來說這是無法避免的 而有些n久以前的資料庫要使用新程式的時候,資料庫的公升級簡直就是無從下手.所以對比資料庫公升級的緊要性就逐漸的凸現出來.對於表和字段的公升級按道理...

在ClanLib中使用blend func

本文是對blend func完全沒有認識的人寫的,就好象一天前的我一樣。廢話我就留到後面才說吧。在clanlib庫中的cl su ce與cl sprite中都會有 這個函式 void set blend func cl blendfunc src,cl blendfunc dest 其cl blen...

在MFC中使用Tab Control

說實話,我剛開始看見tab control的時候,覺得很簡單。哪知道用了一下,才發現自己錯了。要用好它,還是需要一些技巧的。經過網上搜尋資料,以及我自己的摸索,把一些要點記錄在這裡。tab control的執行效果有點像property sheet,但兩者還是有一些區別。我的理解就是property...