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)是一样的

应该没有什么区别吧?