⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 C++BUILDER 下的串口驱动模块源码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
#define  x_time 100
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
int lcd_zsprint(int ch);
int i_data,x,y;
static int ZS_data,time_data,time_tz,ZS_data_min=100,ZS_data_max;
void LCD_back(void);
extern void lcd_layer_setpixel(int x,int y,int color);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
		: TForm(Owner)
{
		Memo1->ScrollBars=ssVertical;
		com3.Open(Read_comid());
		com3.SetState(ComboBox2->Text.ToInt(),8,NOPARITY,1);
		com3.SetWnd(Handle);

		//com2.Open(2);
		//com2.SetWnd(Handle);
		if(!com3.IsOpen())
			   ShowMessage("can not open com1");
		//if(!com2.IsOpen())
		//	   ShowMessage("can not open com2");
		LCD_back();

}
//---------------------------------------------------------------------------
LRESULT __fastcall TForm1::OnComRecv(TMessage &msg)
{
		AnsiString str;
		int number,DATA,k;
		char CH,CL;
		uint8 buf[1024];

		if(msg.WParam == 3)
		{
			//str += com3.ReadString(buf, 1024,3000);
			number=com3.Read(buf, 1024);
		}
		for(k=0;k<number;)
		{
			if((buf[k]==0xff)&&(buf[k+3]==0xfe))
			{
				CH=buf[k+1];
				CL=buf[k+2];
				DATA=(CH<<8)+CL;
				//Testem_data_num.PCA_buf[i]=DATA;
				//printf("Read data is %d\n",CH);
				lcd_zsprint(DATA);
				//ShowMessage(ZS_data);
				CH=0;
				CL=0;
				i_data++;
				if(i_data>=10000)
				{
					i_data=0;
					//printf("Zssize out\n");
				}
				 k+=4;
			}
			if(x>=400)
			{
				LCD_back();
				x=0;
				y=0;
			}
	   }
		//Memo1->Lines->Strings[Memo1->Lines->Count-1]=Memo1->Lines->Strings[Memo1->Lines->Count-1]+str;
		//Memo1->SelStart=Memo1->Text.Length();
		return 0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
		com3.Write(Edit1->Text.c_str());
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------


void __fastcall TForm1::Button3Click(TObject *Sender)
{

		com3.Open(Read_comid(),ComboBox2->Text.ToInt());

		com3.SetState(ComboBox2->Text.ToInt(),8,NOPARITY,1);
		//ShowMessage(ComboBox2->Text.ToInt());
		com3.SetWnd(Handle);
		//com2.Open(2);
		//com2.SetWnd(Handle);
		if(!com3.IsOpen())
			   ShowMessage("can not open com");

		//if(!com2.IsOpen())
		//	   ShowMessage("can not open com2");

}
//---------------------------------------------------------------------------
int __fastcall TForm1::Read_comid(void)
{
		 char *s;
		 s=ComboBox1->Text.c_str();
		 return((*(s+3)-'0'));
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
		com3.Close();
}
//---------------------------------------------------------------------------
int lcd_zsprint(int ch)              //显示转速
{
	time_data=time_data+ch*2;
	time_tz=time_tz+ch*2;
	if(ch==0) return 0;
	ZS_data=(int)(10000000/(ch*11*11));    //11=1.085us*10
	if(ZS_data>=150)
	{
		ZS_data=0;
		return 0;
	}
	if((time_data*1085/100000)>=x_time)
	{
		x=x+(time_data*1085/100000)/x_time;
		time_data=0;
	}
	if(time_tz>=100000)
	{
		time_tz=0;
	}
	y=150-ZS_data;

	lcd_layer_setpixel(x,y,0xff0000);
	Form1->Edit3->Text=ZS_data;

	ZS_data_max=ZS_data_max<ZS_data?ZS_data:ZS_data_max;
	ZS_data_min=ZS_data_min>ZS_data?ZS_data:ZS_data_min;

	Form1->Edit4->Text=ZS_data_max;
	Form1->Edit5->Text=ZS_data_min;
	Form1->Image1->Refresh();
	return 1;
}

void LCD_back(void)
{
		int i,j;
		busybox_all(0,0,400,300,0x00);
		for(i=0;i<300;i+=10)
		{
			line_hang(0,i,400,RGB(100,100,100));
		}
		for(j=0;j<400;j+=10)
		{
			line_lie(j,0,300,RGB(100,100,100));
		}
		return ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -