|
看下我的需求:
用python編寫一個(gè)程序,,主要功能要求如下:
生成一個(gè)600*1000窗體,,窗體左上角上有一個(gè)主按鈕,按鈕上顯示PRO,,按下該按鈕后,,主按鈕消失,縱向出現(xiàn)15個(gè)按鈕,,按鈕上分別顯示以下字樣:
Accel max speed
Accel min speed
Decel high speed
Decel low speed
返回主界面
在窗體右側(cè)距離窗體右側(cè)大概10mm的位置上,,以及距離頂部200的位置上縱向排列三個(gè)按鈕,上面的按鈕上顯示+號(hào),,中間的按鈕上顯示-號(hào),,這兩個(gè)按鈕是固定的,不會(huì)受到左側(cè)按鈕的影響。下面的按鈕上顯示“返回”字樣,。右上方用text文本顯示RxD+發(fā)送的HEX數(shù)據(jù),,回車,然后顯示TxD+接收的數(shù)據(jù)加上回車,。超過text控件長度后向下滾動(dòng),。text控件距離右上角頂部距離為10,右側(cè)距離為10,,寬度為200,,高度為100。
在啟動(dòng)窗體時(shí),,執(zhí)行以下操作:
1,、定義一個(gè)數(shù)組data_base[],存儲(chǔ)返回的hex格式的參數(shù),,兩列,,300行,初始數(shù)值都為00 00 00,,第一列存儲(chǔ)發(fā)送的參數(shù)查詢代碼,,以01開頭,第二列存儲(chǔ)返回的參數(shù),,以2A開頭,,
2、打開串口com8,,波特率設(shè)置為9600,,校驗(yàn)位設(shè)置為1位,啟動(dòng)窗體后接收hex數(shù)據(jù)為00,,然后向串口發(fā)送hex數(shù)據(jù)FE FE FE FF FE FF,,間隔100ms發(fā)送以下hex數(shù)據(jù):
F0
F4
F4
24
當(dāng)返回的數(shù)據(jù)為AA時(shí),發(fā)送00 00 00 00 00 00 00
當(dāng)返回的數(shù)據(jù)為2A 12 0C 00 00 00 00 00 1E時(shí),,發(fā)送03 00 36 00 00 00 39,,
當(dāng)返回的數(shù)據(jù)為2A 01 05 31 32 31 32 50 2D 32 35 30 32 00 00 30 36 30 34 37 39 00 00 47 65 6E 65 72 69 63 00 00 00 00 00 00 00 00 00 00 02 00 36 00 02 00 02 08 59 00 05 00 48 06 F3 07 EC 時(shí);發(fā)送03 08 59 00 3A 00 9E,,然后間隔100ms發(fā)送03 00 05 08 93 00 A3,,如果返回?cái)?shù)據(jù)為2A 00 00 00 00 00 00 00時(shí),發(fā)送03 00 48 08 98 00 EB,;然后收到2A 00 01 31 01 32 00 01 33 01 34 00 01 35 01 36 00 01 37 01 38 00 01 23 01 22 00 01 25 01 24 00 01 27 01 26 00 01 29 01 28 00 01 41 01 43 00 01 4A 01 4B 01 01 2D 01 2C 01 01 2C 01 2F 01 01 2C 01 30 01 01 2F 01 2E 05 76 05 F1時(shí),,開始發(fā)送以01開頭的參數(shù)查詢代碼,并記錄返回的參數(shù),,依次保存在數(shù)組dada_base[]中,,例如在開始查詢01 00 01 01 31 00 34的參數(shù)時(shí),,將01 00 01 01 31 00 34保存在dada_base[0,0]中,,返回的數(shù)值為2A 02 00 02,,去掉前面的2A,將該參數(shù)保存在dada_base[0,,1]中,,然后以100ms的速度依次發(fā)送以下查詢參數(shù),并將對(duì)應(yīng)返回的數(shù)值保存在數(shù)組中:
01 00 01 01 36 00 39
01 00 01 01 33 00 36
01 00 01 01 34 00 37
01 00 01 01 37 00 3A
01 00 01 01 38 00 3B
01 00 01 01 39 00 3C
當(dāng)發(fā)送了最后一個(gè)01 00 01 01 00 00 03時(shí),,以300ms的頻率循環(huán)發(fā)送24,接收數(shù)據(jù)為AA,;此為主循環(huán)
按下Accel max speed 按鈕后,,主循環(huán)中斷,在中心位置出現(xiàn)一個(gè)進(jìn)度條,,起點(diǎn)數(shù)據(jù)為0.2,,終點(diǎn)數(shù)據(jù)為8.0,進(jìn)度條位置為查詢data_base數(shù)組中第1列中01 00 01 01 31 00 34對(duì)應(yīng)的數(shù)組索引號(hào)i,,記錄當(dāng)前的數(shù)組索引號(hào)i,,計(jì)算data_base[i,1]中的數(shù)據(jù)在02 00 00和79 00 79 這兩個(gè)數(shù)據(jù)之間的位置百分比,然后顯示在進(jìn)度條上,。
按下+按鈕,,發(fā)送代碼02 00 01 01 31 00 35,接收到返回的代碼為2A,,然后發(fā)送的代碼為data_base[i,1]的第2位+1,,第6位+1的hex參數(shù),例如查詢得到的代碼是02 00 02,,則按下+按鈕后收到2A時(shí)發(fā)送03 00 03,,返回的數(shù)據(jù)為2E,然后發(fā)送數(shù)據(jù)01 00 01 01 31 00 34,,找到對(duì)應(yīng)的數(shù)組索引,,并將返回的數(shù)據(jù)前面的2A刪除后寫入data_base[i,1],進(jìn)度條當(dāng)前顯示的數(shù)據(jù)以0.1為單位增加,,增加到8后不再增加,。
按下-按鈕,發(fā)送代碼02 00 01 01 31 00 35,,接收到返回的代碼為2A,,然后發(fā)送的代碼為data_base[i,1]的第2位-1,第6位-1的hex參數(shù),,例如查詢得到的代碼是05 00 05,,則按下-按鈕后收到2A時(shí)發(fā)送04 00 04,,返回的數(shù)據(jù)為2E,然后發(fā)送數(shù)據(jù)01 00 01 01 31 00 34,,找到對(duì)應(yīng)的數(shù)組索引,,并將返回的數(shù)據(jù)前面的2A刪除后寫入data_base[i,1],進(jìn)度條當(dāng)前顯示的數(shù)據(jù)以0.1為單位減少,,減少到0.2后不再增加,。
點(diǎn)擊“返回主界面”按鈕時(shí),進(jìn)度條消失,,其他按鈕消失,,窗體進(jìn)入啟動(dòng)時(shí)的初始化狀態(tài)。
=============================================================================
以上功能要求,,三種AI寫的程序基本上都不能正常運(yùn)行,,窗體是生成了,但是效果很差,,當(dāng)然,,這個(gè)功能要求敘述的也有問題,很多地方不是很專業(yè),�,?偟目磥恚耆娲茈y,,AI只能生成一個(gè)框架,,給你一個(gè)建議,需要修改的地方太多了,。
而且還時(shí)不時(shí)的告訴你,,服務(wù)器忙,請(qǐng)重試,。 |
|