EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
VB与51单片机通信若干问题
$ `6 O* w) z5 ?6 v' \6 K
* ~) r: _( t0 R1 }- D% N8 d$ n
# H5 _9 Q% W5 h7 y: H/ i最近在搞一个车库上位机的,用VB编写。上位机界面如图:
8 S+ K8 M3 \1 x+ z/ o9 D0 p1 s8 q3 {
$ R B! u2 }4 P; f+ |, v
- A, ?- e8 O1 a" g3 p2 s! U& q问题1:当单片机P21脚检测到低电平时,通过串口,发送“si ”,在上位机对应位置显示“是”,表示车已经进库。% `4 H0 I3 p6 @6 Y
因为我的这道检测程序是放在while(1)里面的,单片机不断检测,当P21为0时,单片机不断发送“si ”,而上位机对应位置则
& r$ u B& M/ G+ T- m/ R, U$ ^交替显示“是”和"否"(默认),而我只想要第一次接收到的“si ”,从而当P21=0时,只能显示"是",怎么解决。以下是部分程序:
, j; j9 o* Q! R( O4 qVB:Dim rec As String& v k3 e* H6 J+ V% o6 q" I0 z
Select Case MSComm1.CommEvent
, ~ F% A6 M% iCase comEvReceive
- B2 g* ~; P+ o- drec = MSComm1.Input
% s( F' t2 S& ]51: while(1)& ]/ i9 W2 Q* J2 m0 h" q0 s
{4 M5 H5 E0 X" I9 Z B, S8 L
if(miso==0)9 a" T K O; }" V5 r
{
& X: }" l9 H- w6 q- n9 C9 U! l1 g for(i=0;i<3;i++)) Z% f& W ?4 i$ y0 H8 S- L2 c7 G- H5 m
{' S' m$ H! t% x* p& W: Q2 } _) Q
SBUF=table1; //串口发送标志位,table1[]="si "
/ F' l& w4 a! ^ while(!ti);2 j: m: M" W5 `# h
TI=0;$ @$ I5 h; h9 Y! m
}
8 e2 q3 T7 W! y% b& g- \* q( W // miso=1;//已经进库则清除标志
( K9 N P6 ?- V1 I) K4 `* ?5 G( } }: [% s9 \% n$ w& O+ d' o$ F
8 ~0 P# }8 o/ t7 Z
}- I3 f4 I# G0 a) u
问题2:我想只有当按了路线1按钮后,并且rec=“si ”时,text1.text="是";当按了路线2按钮时,并且rec="si "时,text2.text="是"/ n4 e6 k. k) k+ w
怎么编程?以下是我的一个程序: Y% v* d% e* g2 x. \* H! \
Private Sub Command1_Click()
* B: {% O! u1 [7 ~2 g$ _MSComm1.OutBufferCount = 07 l: m% p! r& c. G9 w
MSComm1.Output = Chr(&HC)
" k* R4 j; T4 pa = 1
4 c) Z1 J0 z" p8 g V; H2 a. K9 B'If rec = "si " Then* T+ k {, r, Z9 E: m% s
'Text1.Text = "是"
5 |7 Q# g6 v& f3 q. s'End If* z. _8 K. }0 U9 L8 r
End Sub
9 p) J. _( D; S" x |