亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ceshi.cpp

?? 這是一個(gè)將HDLC協(xié)議運(yùn)用到串口通信的程序源碼 很有參考價(jià)值
?? CPP
字號(hào):
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "ceshi.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "MSCommLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
static int SavePointer=0;
int RVBUF[1024];
int rvbuf[1024];
int sdbuf[1024];
int send[256];
int t_length;
int sdbt;
int sdbh;
int rvbt;
int rvbh;
int RVBH;
int sd_frame[256];
int NS, NR, VS, VR;
int TBL, TBF, TCB, TEC;
int RCB, RV_ERR;
int RBS;
int jishu;
int jishu1;
int ceshi;
int timenum;
int rv_state;
int asd;
int rej1;
int rej2;
int rej3;
int edc;
bool xianshi;
bool fasong = true;

OleVariant TxBuff;
OleVariant RxBuff;
/////////////////////////////
	void send_sdbuf();
        void SaveData(int RCount, int pbVal[]);
	void ProcessData();
	void rr_frame();
	void rej_frame();
        void info_frame();
	void decmd();
	void Transmitt();
	void sim_frame();
void sim_frame() //初始化
{
 	sd_frame[0]=sd_frame[1]=0xee;
	sd_frame[2]=sd_frame[3]=0x07;
	sd_frame[4]=sd_frame[5]=0x77;
	TCB=sd_frame[2];
	TBF=0;
	NS=0;	NR=0;	VS=0;	VR=0;
	TBL=6;
	Transmitt();//發(fā)送
}

void rej_frame() //拒絕
{
	sd_frame[0]=sd_frame[1]=0xee;
	sd_frame[2]=sd_frame[3]=0x9+(VR<<5);
	sd_frame[4]=sd_frame[5]=0x77;
	TCB=sd_frame[2];
	TBF=0;
	TBL=6;
	Transmitt();
        jishu++;
        jishu=jishu&0xffff;
        Form1->Label2->Caption = IntToStr(jishu);
}
void rr_frame()  //準(zhǔn)備好幀
{
	sd_frame[0]=sd_frame[1]=0xee;
        sd_frame[2]=sd_frame[3]=1+(VR<<5);
	sd_frame[4]=sd_frame[5]=0x77;
	TCB=sd_frame[2];
	TBF=0;
	TBL=6;
	Transmitt();
}
void decmd()    //解幀
{
	int i;
        unsigned char check;
	if(RV_ERR)
	{
		if(TBF==1)
			sdbh=(sdbh-TBL+TEC+6)%1024;
		rej_frame();
                rej1++;
                rej1=(rej1 & 0xffff);
                Form1->Label9->Caption = IntToStr(rej1);
		RV_ERR=0;
	}
	else if (!(RCB&1))
	{
		check=0;
		for(i=rvbt;i!=RBS;)
		{
			check=(check+rvbuf[i])&0xff;
			i=(i+1)&0x3ff;
		}
		check=(check+RCB)&0xff;
		NS=((RCB>>1)&0x7);  //次站所發(fā)幀
		NR=RCB>>5;          //次站所等幀
                asd = rvbuf[RBS];
		if(check!=rvbuf[RBS])
                {
			rej_frame();
                        rej2++;
                        rej2 = (rej2 & 0xffff);
                        Form1->Label10->Caption = IntToStr(rej2);
                }
		else if((NR==((VS+1)&7))&&(NS==VR))//正常傳輸
		{
			VS=((VS+1)&7);
			VR=((VR+1)&7);
			rvbt=RBS;
                        if(sdbt!=sdbh)
				info_frame();
			else    rr_frame();
		}
		else if((NR==VS)&&(NS==VR))
		{
			VR=((VR+1)&7);
			rvbt=RBS;
			if(TBF==1)
			     Transmitt();
			else if (sdbt!=sdbh)
                             info_frame();
			else rr_frame();
		}
		else if((NR!=VS)&&(NR!=((VS+1)&7))&&(NS==VR))
		{
			VS=0;
			VR=((VR+1)&7);
			rvbt=RBS;
			if(TBF==1)
			     sdbh=(sdbh+TEC+6-TBL)%1024;
			sim_frame();
		}
		else if((NR==((VS+1)&7))&&(NS!=VR))
		{
			VS=((VS+1)&7);
			rej_frame();
                        rej3++;
                        rej3 = (rej3 & 0xffff);
                        Form1->Label11->Caption = IntToStr(rej3);
		}
		else if((NR==VS)&&(NS!=VR))
		{
			if(TBF==1)
				sdbh=(sdbh+TEC+6-TBL)%1024;
			VR=0;
			sim_frame();
		}
		else
		{
			if(TBF==1)
				sdbh=(sdbh+TEC+6-TBL)%1024;
			NS=0;
			NR=0;
			sim_frame();
		}
	}
	else
	{
		switch(RCB&0xf)
		{
		        case 0x07:
				sim_frame();
			        break;
		        case 0x01:
			       {
				   NR=(RCB>>5);
				   if(NR==((VS+1)&7))
				   {
					VS=((VS+1)&7);
					if(sdbt==sdbh) //發(fā)送BUFFER頭尾指針相同發(fā)準(zhǔn)備好幀
						rr_frame();
					else           //不同發(fā)信息幀
					{
						info_frame();
					}
                                   }
				   else if(NR==VS)
				   {
					if(TBF)
						Transmitt();
					else
					{
						if (sdbh!=sdbt)
							info_frame();
						else
							rr_frame();
					}
				    }
				    else
				    {
					sim_frame();
				    }
			        }
                                break;
                        case 0x09:
                                jishu1++;
                                jishu1=jishu1 & 0xffff;
                                Form1->Label3->Caption = IntToStr(jishu1);
				if ((TCB&0xf)==0x9)
				{
					rr_frame();
                                }
				else
                                        Transmitt();
			        break;
		        case 0x03:
			       	rr_frame();
				break;
                        default:
                                break;
		}
	}
}

void SaveData(int RCount, int pbVal[])
{
        int i,a;
        AnsiString p;
        p = "";
	for(i=0;i<RCount;i++)
	{
		a=(SavePointer+i)&0x3ff;
		RVBUF[a]=pbVal[i];
                p = p + IntToStr(pbVal[i]) + ",";
	}
	SavePointer=(RCount+SavePointer)&0x3ff;
        if(xianshi)
             Form1->Label1->Caption=p;
        ProcessData();
}


void ProcessData() //用來(lái)濾掉幀標(biāo)志
{
        int i=0;
	for(i=RVBH;i!=SavePointer;)
	{
		switch(rv_state)
		{
		    case 0:
			if(RVBUF[i]==0xee)
				rv_state=1;
		        break;
		    case 1:
			if(RVBUF[i]==0xee)
				rv_state=2;
			else
                                rv_state=0;
		        break;
		    case 2:
			RCB=RVBUF[i];
			if(!(RCB&1))
			{
				rv_state=3;
				RBS=rvbt;
			}
			else
                                rv_state=5;
		        break;
                    case 3:
			if(RVBUF[i]==0x77)
				rv_state=4;
			rvbuf[RBS]=RVBUF[i];
			RBS=((RBS+1)&0x3ff);
			break;
		    case 4:
			if(RVBUF[i]==0x77)
			{
				RBS=(RBS-2)&0x3ff;
				rv_state=0;
				decmd();
                        }
			else
				rv_state=3;
			break;
		    case 5:
			if(RVBUF[i]!=RCB)
				RV_ERR=1;
			rv_state=6;
			break;
		    case 6:
                        if(RVBUF[i]==0x77)
				rv_state=7;
			break;
		    case 7:
			if(RVBUF[i]==0x77)
			{
				decmd();
				rv_state=0;
			}
			else
                                rv_state=6;
			break;
		    default:
                        rv_state=0;
			break;
		}
		i++;
		i=i&0x3ff;
	
	}
        RVBH = i; 
}

void info_frame()//成幀
{
	int j,q,k,l;
        unsigned char check;
	sd_frame[0]=sd_frame[1]=0xee;
	sd_frame[2]=(VS<<1)+(VR<<5);
	check=sd_frame[2];
	j=3;
	TEC=0;
	while((sdbh != sdbt) && (j < 200))
	{
                q = sdbuf[sdbh];
		for(k=0;k<q;k++,j++)
		{
			l=(k+sdbh) & 0x3ff;
			sd_frame[j]=sdbuf[l];
			check=(check+sd_frame[j]) & 0xff;
			if(sd_frame[j]==0x77)
			{
				TEC++;
				j++;
				sd_frame[j]=0;
			}
		}
                sdbh = (sdbh + q)&0x3ff;
	}
	sd_frame[j++]=check;
	if(check==0x77)
	{
		TEC++;
		sd_frame[j++]=0;
	}
	sd_frame[j++]=0x77;
	sd_frame[j++]=0x77;
	TCB=sd_frame[2];
	TBF=1;
	TBL=j;//發(fā)送長(zhǎng)度
	Transmitt();
}

void send_sdbuf()
{
	for(int i=0;i<t_length;i++)
	{
		sdbuf[sdbt]=send[i];
		sdbt=(sdbt+1)&0x3ff;
	}
}

//串口發(fā)送處理
void Transmitt()
{
  int Count=TBL;
  TxBuff=VarArrayCreate(OPENARRAY(int,(0,Count-1)),varByte);
  for(int i=0;i<Count;i++)
    TxBuff.PutElement(sd_frame[i],i);
    Form1->MSComm1->Output=TxBuff;
  timenum = 0;
}

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  rv_state = 0;
  sim_frame();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        MSComm1->PortOpen=true;
	int ii;                                                          //                                               //
	for(ii = 0; ii < 256; ii++)
        {                                     //
		sd_frame[ii] = 0;
                send[ii] = 0;
        }
        t_length = 0;                                          //
	TBF = 0;                                                         //                                                        //
	TBL = 0;                                                         //                                                    //
	NS = 0;                                                          //
	NR = 0;                                                          //
	VR = 0;                                                          //
	VS = 0;                                                          //
	TEC = 0;
        jishu = 0;
        jishu1 = 0;                                                      //
	for(ii = 0;ii<1024;ii++)                                         //
	{                                                                //
		sdbuf[ii]=0;                                              //
		rvbuf[ii]=0;
                RVBUF[ii]=0;                                           //
	}                                                  //
	rv_state = 0;                                                                     //
	sdbt = 0;                                                        //
	rvbt = 0;                                                        //
	sdbh = 0;                                                        //
	rvbh = 0;
        RVBH = 0;                                                        //
        ceshi =0;
        rej1=0;
        rej2=0;
        rej3=0;
        timenum = 0;
        asd = 0;
        xianshi = true;
        Timer1->Enabled = true;
        Label2->Caption = IntToStr(jishu);
        Label3->Caption = IntToStr(jishu1);
        Label8->Caption = IntToStr(ceshi);
        Label9->Caption = IntToStr(rej1);
        Label10->Caption = IntToStr(rej2);
        Label11->Caption = IntToStr(rej3);                                          //
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
             int length;
             int BuffPtr=0;  
             int buffr[1024];
             if (MSComm1->CommEvent!=comEvSend)
             {
                 length=MSComm1->InBufferCount;
                 if (MSComm1->InBufferCount>0)
                 {
                     length=MSComm1->InBufferCount;
                     MSComm1->InputLen=length;
                     RxBuff=MSComm1->Input;
                     for(int i=0;i<length;i++)
                     {
                         buffr[BuffPtr++]=RxBuff.GetElement(i);
                         BuffPtr=(BuffPtr & 0x3ff);
                     }
                     MSComm1->InBufferCount=0;
                     SaveData(length,buffr);
                 }
             }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
   int i,j;
   for( i=0;i<64;i=i+4)
   {
     send[i]=4;
     for(j=1;j<4;j++)
        send[j+i]=j;
   }
   t_length = i;
   send_sdbuf();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  timenum++;
  if(timenum>60)
  {
     timenum=0;
     xianshi=false;
     ceshi++;
     ceshi=ceshi&0xffff;
     Label8->Caption=IntToStr(ceshi);
     Memo1->Lines->Add(IntToStr(rv_state)+"=>"+TimeToStr(Time())+"=>"+DateToStr(Date()));
     rv_state=0;
     sim_frame();
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Form1->Label1->Caption = "";
   jishu = 0;
   jishu1 = 0;
   ceshi = 0;
   timenum = 0;
   rej1=0;
   rej2=0;
   rej3=0;
   Form1->Label2->Caption = IntToStr(jishu);
   Form1->Label3->Caption = IntToStr(jishu1);
   Form1->Label8->Caption = IntToStr(ceshi);
   Form1->Label9->Caption = "0";
   Form1->Label10->Caption = "0";
   Form1->Label11->Caption = "0";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
   int i;
   send[0] = 0x09;
   send[1] = 0x20;
   for( i=2;i<9;i++)
     send[i]=0xff;
   t_length = i;
   send_sdbuf();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
   int i,j;
   fasong = (!fasong);
   if(fasong)
   {
      send[0] = 0x09;
      send[1] = 0x20;
        for( i=2;i<9;i++)
      send[i]=0xff;
      t_length=i;
      send_sdbuf();
   }
   else
   {
      for( i=0;i<128;i=i+4)
      {
        send[i]=4;
        for(j=1;j<4;j++)
           send[j+i]=j;
      }
      t_length=i;
      send_sdbuf(); 
   }
}
//---------------------------------------------------------------------------


void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
   xianshi=(!xianshi);
}
//---------------------------------------------------------------------------



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷久久久久swag精品| 国产精品国产精品国产专区不蜜| 欧美一区二区精品| 国产精品久久久久久户外露出 | 亚瑟在线精品视频| 国产精品99精品久久免费| 欧美日韩国产天堂| 亚洲免费观看高清完整版在线观看| 蜜桃av一区二区| 精品视频在线视频| 最新久久zyz资源站| 国产精品原创巨作av| 正在播放一区二区| 夜夜爽夜夜爽精品视频| 成人av在线一区二区三区| 欧美不卡123| 欧美精品免费视频| 中文字幕在线免费不卡| 国产美女久久久久| 精品99一区二区三区| 午夜精彩视频在线观看不卡| 色狠狠色狠狠综合| 亚洲免费观看高清完整版在线观看熊| 国产精品123| 久久久久亚洲蜜桃| 极品少妇一区二区三区精品视频| 欧美日韩国产三级| 亚洲成人av免费| 欧美影片第一页| 一区二区三区欧美激情| 色婷婷av一区二区三区软件| 欧美激情一区二区| 成人小视频免费在线观看| 久久久久国产成人精品亚洲午夜| 久久成人18免费观看| 精品免费国产二区三区| 激情综合网天天干| 久久精品免视看| 粉嫩欧美一区二区三区高清影视| 中文字幕av免费专区久久| 成人免费观看视频| 亚洲欧美国产高清| 欧美日韩中文国产| 热久久国产精品| 久久这里只有精品首页| 国产成人综合在线观看| 日本一区二区免费在线| 91在线观看下载| 亚洲地区一二三色| 日韩午夜在线观看视频| 极品少妇xxxx精品少妇| 国产精品全国免费观看高清| 色综合欧美在线| 天堂在线亚洲视频| 久久综合视频网| 久久精品亚洲国产奇米99| 亚洲欧美另类久久久精品2019| 色综合久久综合网97色综合| 亚洲va中文字幕| 久久综合99re88久久爱| 91丨九色丨国产丨porny| 亚洲成av人在线观看| 欧美精品一区二区在线播放| 成人动漫中文字幕| 天天做天天摸天天爽国产一区| 精品播放一区二区| 一本色道a无线码一区v| 免费成人性网站| ●精品国产综合乱码久久久久| 欧美日本韩国一区| 不卡一区中文字幕| 日本美女一区二区| 自拍偷拍欧美精品| 日韩精品中午字幕| 在线观看日韩毛片| 国产精品影音先锋| 午夜欧美一区二区三区在线播放| 久久精品亚洲一区二区三区浴池| 欧美性猛交xxxxxx富婆| 国内精品视频666| 亚洲精品久久7777| 久久综合色综合88| 欧美日韩精品欧美日韩精品| 丰满少妇久久久久久久| 免费在线观看精品| 国产亚洲欧美日韩在线一区| 久久亚洲精品国产精品紫薇| 成人午夜视频福利| 午夜精品久久久久| 亚洲免费在线视频一区 二区| 日韩一卡二卡三卡国产欧美| 91日韩在线专区| 国产成人夜色高潮福利影视| 天天综合网 天天综合色| 久久久精品人体av艺术| 国产精品久久久久久一区二区三区 | 一区二区三区四区视频精品免费 | 日本不卡在线视频| 亚洲另类春色国产| 国产精品国产三级国产aⅴ入口| 精品国产乱码久久久久久久| 欧美嫩在线观看| 色8久久精品久久久久久蜜| 国产精品系列在线播放| 另类中文字幕网| 蜜臀久久久久久久| 天堂在线一区二区| 亚洲成人自拍一区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美激情一区二区三区不卡| 久久久精品免费免费| 久久一区二区视频| 久久久久久久综合| 久久精品一区二区三区不卡| 久久亚洲综合色| 国产三级精品视频| 亚洲国产精品ⅴa在线观看| 欧美日韩国产电影| 亚洲日本乱码在线观看| 国产欧美日本一区视频| 26uuu久久天堂性欧美| 2022国产精品视频| 久久精品一区二区三区不卡 | 午夜精品福利久久久| 亚洲福中文字幕伊人影院| 亚洲香蕉伊在人在线观| 香蕉加勒比综合久久| 亚洲女人的天堂| 成人免费视频一区| 成人丝袜高跟foot| 99久久久久久| 欧美性大战久久久| 51午夜精品国产| 久久久国产精华| 国产欧美日韩精品在线| 最新成人av在线| 污片在线观看一区二区| 久久 天天综合| 成人福利视频在线| 欧美一激情一区二区三区| 欧美综合色免费| 欧美日韩精品欧美日韩精品| 日韩午夜在线观看| 欧美激情一区二区在线| 成人免费在线视频观看| 亚洲国产精品一区二区尤物区| 天天影视网天天综合色在线播放| 激情综合五月天| 色老综合老女人久久久| 777午夜精品免费视频| 国产亲近乱来精品视频| 亚洲香蕉伊在人在线观| 国产一区二区中文字幕| 色婷婷狠狠综合| 精品嫩草影院久久| 亚洲欧美国产77777| 日本亚洲视频在线| 99久久精品国产麻豆演员表| 91精品国产欧美一区二区18| 亚洲国产成人一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 国产成人福利片| 欧美日韩国产美女| 中文字幕的久久| 久久精品免费观看| 91豆麻精品91久久久久久| 久久一二三国产| 日韩av网站在线观看| 一本一道久久a久久精品| 26uuu久久天堂性欧美| 午夜精品久久久久久久蜜桃app| 国产成人精品免费| 日韩一区二区三区在线观看| 一区二区三区四区高清精品免费观看 | 欧美经典一区二区| 日韩电影一区二区三区四区| 91啪九色porn原创视频在线观看| 精品区一区二区| 午夜精品久久久久久久久久| 色综合天天天天做夜夜夜夜做| 久久久www免费人成精品| 午夜精品视频一区| 欧美午夜在线观看| 亚洲视频一二三区| www.欧美.com| 国产日韩欧美精品综合| 免费成人在线播放| 欧美肥胖老妇做爰| 亚洲国产aⅴ成人精品无吗| 97se狠狠狠综合亚洲狠狠| 欧美经典一区二区| 国产精品亚洲专一区二区三区| 91精品国产麻豆国产自产在线| 亚洲成a人片在线观看中文| 色综合久久88色综合天天免费| ●精品国产综合乱码久久久久| 成人伦理片在线| 1024亚洲合集| 日本高清视频一区二区| 一区二区三区日本|