C++Builder 程序员博客
30 Jul
Sub FshComm(lw As Byte, hi As Byte)
On Error Resume Next
Dim bb(1) As Byte
If fshComN <> 1 And fshComN <> 2 Then fshComN = 1
MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.PortOpen = True
bb(0) = lw: bb(1) = hi ' (CByte(Text3(0).Text)) 'lw)
MSComm1.Output = bb ' Buffer
MSComm1.OutBufferCount = 0
MSComm1.PortOpen = False
End Sub
Private Sub Command1_Click()'等闪
Dim lptms As Integer
lptms = 5000 / 30 '??这里是30,可以闪
FshComm lptms Mod 256, &H80 + Fix(lptms / 256)
End Sub
Private Sub Command2_Click()'等亮
FshComm 0, 0
End Sub
下面是等BCB的
void __fastcall TForm1::FormCreate(TObject *Sender)
{
MSComm1->CommPort =1;
MSComm1->PortOpen =true;
}
void __fastcall TForm1::btn1Click(TObject *Sender)//等闪
{
int lptms;
int aa,bb;
lptms = 5000.0/10+0.5 ; //??这里是10,若是30灯就不闪了
aa= lptms%256;
bb= 128+lptms/256;
OleVariant ovTxtBuf = VarArrayCreate(OPENARRAY(int, (0, 2)), varByte);
ovTxtBuf.PutElement(aa, 0);
ovTxtBuf.PutElement(bb, 1);
MSComm1->Output = ovTxtBuf;
MSComm1->OutBufferCount =0;
}
void __fastcall TForm1::btn2Click(TObject *Sender)
{
OleVariant ovTxtBuf = VarArrayCreate(OPENARRAY(int, (0, 2)), varByte);
ovTxtBuf.PutElement(0, 0); //停止闪动
ovTxtBuf.PutElement(0, 1);
MSComm1->Output = ovTxtBuf;
}
上面??处,若为20以下灯都可以闪,若大于20,vb写的可以闪,bcb的不可以闪,我看了下。得到的数值(aa,bb)是一样的
应该没有什么区别吧?