1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình hướng dẫn tìm hiểu cách tạo các cổng giao tiếp trong các thiết bị ngoại vi phần 7 doc

10 360 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 344,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SỬ DỤNG CHƯƠNG TRÌNH DOWNLOAD.. Để sử dụng chương trình DowLoad, trước tiên phải về màn hình Dos vì chương trình được viết trong môi trương Dos, không quản lý được các chương trình điều

Trang 1

}

else

flushall();

}

if(lpEvent->Msg==1)

{

if(lpEvent->Posx>=Cx1&&lpEvent->Posx<=Cx2&&lpEvent->Posy>=Cy1&&lpEvent->Posy<=Cy2)

{

OK=0;

goto CompleteCancel;

}

if(lpEvent->Posx>=Ox1&&lpEvent->Posx<=Ox2&&lpEvent->Posy>=Oy1&&lpEvent->Posy<=Oy2)

{

OK=1;

goto CompleteOk;

}

}

ShowMouse();

}while(1);

}

XII CLASS SEND.HPP

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <MATH.H>

#include <COMPLEX.H>

#include <PROCESS.H>

#include <string.h>

#if !defined SEND

#define SEND

class SEND

{

private:

char OutFile[100];

public:

char *CatFile(char St_add[],char End_add[],char InFile[]);

int Out();

int DeleteFile();//se del OutFile

};

#endif

extern int Esc();

XIII MODULE SEND.CPP

#include "screen.h"

#include "send.hpp"

#define data 0x378

#define sta 0x379

#define ctr 0x37a

char *SEND::CatFile(char St_add[],char End_add[],char InFile[])

{

char

KyTu_Hex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E ','F','a','b','c','d','e','f'};

int

Gtri_Dec[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,10,11,12,13,14,15}; unsigned int i,DemSpace;

Trang 2

unsigned int Value1=0,Value2=0;

char FindPos,FindValue;

int Thoigian=0;

FILE *f,*f1;

char t,t1,t2,t3,t4;

// char St_add[]="0000 Hex",End_add[]="000F Hex";

int end_line;

strcpy(OutFile,InFile);

i=strlen(OutFile);

do

{

OutFile[i]='\0';

}while(OutFile[ i]!='.');

strcat(OutFile,"tmp");//dat ten cho file se tao ra

for (FindPos=3;FindPos>=0;FindPos )

for(FindValue=0;FindValue<22;FindValue++)

if(St_add[FindPos]==KyTu_Hex[FindValue])

Value1+=pow(16,(3-FindPos))*Gtri_Dec[FindValue];

for (FindPos=3;FindPos>=0;FindPos )

for(FindValue=0;FindValue<22;FindValue++)

if(End_add[FindPos]==KyTu_Hex[FindValue])

Value2+=pow(16,(3-FindPos))*Gtri_Dec[FindValue];

f=fopen(InFile,"rt");

f1=fopen(OutFile,"w+t");

fwrite(St_add,4,1,f1);

fwrite(End_add,4,1,f1);

do

{

do

{

fread(&t1,1,1,f);

}while(t1!='\'');//ngay sau dia chi cua lenh

do

{

fread(&t1,1,1,f);

}while(t1==' ');//den lenh

end_line=0;

do

{

fread(&t2,1,1,f);

Value1++;

DemSpace=0;

do

{

fread(&t,1,1,f);

DemSpace++;

}while(t==' '&&DemSpace<3);//con la lenh hoac dia chi hay da cham dut mot lenh

if(DemSpace>=2)//la ma lenh hoac da ket thuc mot dong lenh {

fwrite(&t1,1,1,f1);

fwrite(&t2,1,1,f1);

Trang 3

t1=t;

}

if(DemSpace==1)

{

t3=t;

fread(&t4,1,1,f);

Value1++;

fwrite(&t3,1,1,f1);

fwrite(&t4,1,1,f1);

fwrite(&t1,1,1,f1);

fwrite(&t2,1,1,f1);

DemSpace=0;

do

{

fread(&t,1,1,f);

if(t==' ')

DemSpace++;

}while((t=='\''||t==' ')&&DemSpace<3);//con la lenh hoac dia chi hay da cham dut mot lenh

if(DemSpace==2)

t1=t;

}

if(DemSpace>2)

{

end_line=1;

}

}while(end_line==0);

}while(Value1<=Value2);

fcloseall();

return OutFile;

}

// -

int SEND::Out()

{

int result,Temp;

FILE *f;

char value;

int n,dem=0;

int Stop=0;

char

KyTu_Hex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E ','F','a','b','c','d','e','f'};

int

Gtri_Dec[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,10,11,12,13,14,15};

if ( (f = fopen(OutFile,"rt")) == NULL)

{

OutError("Cannot open input file.");

return dem;

}

while(!feof(f))

{

do

{

result=inportb(sta);

result=result & 0x80;

Stop=Esc();

}while(result !=0x80&&Stop!=1);//doc busy cho toi khi !busy = 1 if(Stop==1)

return -1;

n=fread(&value,1,1,f);

Trang 4

if(n==0)

return dem;

for(int z=0;z<22;z++)//doi ky tu ra gia tri Dec de goi di

if(value==KyTu_Hex[z])//nible cao

{

Temp=Gtri_Dec[z]*16;

z=22;

}

fread(&value,1,1,f);

for(z=0;z<22;z++)//nible thap

if(value==KyTu_Hex[z])

{

Temp=Gtri_Dec[z]+Temp;

z=22;

}

outportb(data,Temp);//pow(2,i));//xuat du lieu ra thanh ghi du lieu

outportb(ctr,0x00);// cho strobe = 1 de bao cho phan thu biet da goi du lieu ra thanh ghi du lieu

dem++;

do

{

result=inportb(sta);

result=result & 0xC0;

Stop=Esc();

}while(result!=0x40&&Stop!=1);//doc ack cho den khi ack = 1 if(Stop==1)

return -1;

outportb(ctr,0x01);// cho strobe = 0 de bao cho phan thu biet da goi xong mot byte du lieu ra thanh ghi du lieu

}

return 0;

}

// -

int SEND::DeleteFile()

{

return remove(OutFile);

}

// -

int Esc()

{

if(kbhit())//nhan Esc de thoat

{

if(getch()==27)

{

OutError("Task is not complete !!!");

}

else

flushall();

return 1;

}

return 0;

}

XIV.CLASS TEXTBOX.HPP

#include <string.h>

#if !defined TEXTBOX

#define TEXTBOX

class TEXTBOX

{

private:

int l,t,r,b;

Trang 5

int Color,Color1;

char S[100],S1[100];

char Dri[100],Path_var[100],Name[100],TenFile[100],SubFile[100]; int chiso;

public:

TEXTBOX() {S[0]='\0';}//S1="Duong dan";}

void InitTextBox(int x1,int y1,int x2,int y2,int color,int

color1,char s[]);

void Path();

void PressTextBox();

void OutTextBox();

int Left(){return l;}

int Top(){return t;}

int Right(){return r;}

int Bottom(){return b;}

void DelChar(int length);//,int xoa);//de xoa ky tu khi gap phim del tai texbox

void InsertChar(char c);

void GetS(char s[]){strcpy(s,S);};

void GetS_in(char s[]){strcpy(S,s);}

int DuongDan(char s[]);

void Get_path(char s[]){strcpy(s,Path_var);};

void Get_name();

};

#endif

XV.MODULE TEXTBOX.CPP

#include <dir.h>

#include <stdio.h>

#include <conio.h>

#include <graphics.h>

#include <string.h>

#include <dos.h>

#include <ctype.h>

#include "textbox.hpp"

#include "mouse.h"

// -

void TEXTBOX::InitTextBox(int x1,int y1,int x2,int y2,int color,int color1,char s[])

{

char buffer[MAXPATH];

l=x1;t=y1;r=x2;b=y2;

Color=color;

Color1=color1;

strcpy(S1,s);

getcwd(buffer, MAXPATH);

strcpy(S,buffer);

strcat(S,"\\");

}

// -

void TEXTBOX::OutTextBox()

{

setfillstyle(SOLID_FILL,Color);

bar(l,t,r,b);

setcolor(WHITE);

line(l,b,r,b);

line(r,t,r,b);

setcolor(BLACK);

line(l,t,r,t);

line(l,t,l,b);

Trang 6

setcolor(WHITE);

if(Color==WHITE)

setcolor(BLACK);

outtextxy(l,t+(b-t-textheight(S))/2-b+t-3,S1);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

}

// -

/*

void TEXTBOX::PressTextBox()

{

setcolor(BLACK);

line(l,t,r,t);

line(l,t,l,b);

setcolor(WHITE);

line(l,b,r,b);

line(r,t,r,b);

}

*/

// -

void TEXTBOX::Path()//lay duong dan nhap vao vao bien S cua TEXTBOX {

char a;

int C1=Color1;//C1 la mau cua text trong textbox o che do nhap ten file

setcolor(C1);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

chiso=0;

MouseText(l+textwidth(S)+4,t+(b-t+textheight(S))/2,Color,C1);//,S);//gia dau nhac chuot

char stemp[128];

strcpy(stemp,S);

while((a=getch())!=13)//&&a!=27)//kiem tra phim Enter

{

switch(a)//kiem tra ky tu nhap vao

{

case 0:switch(a=getch())

{

case 71://home

MouseText(l+6,t+(b-t+textheight(S))/2,Color,C1);//,S); chiso=-strlen(S);

break;

case 72:break;

case 73:break;

case 75://left arrow

int f=textwidth(S);

int xt=l+6+f+( chiso)*8;

int yt=t+(b-t+textheight(S))/2;

if(xt<l+6) xt=l+6+f+((++chiso))*8;

MouseText(xt,yt,Color,C1);//,S);//so 8 la be ngang 1 ky

tu

break;

case 77://right arrow

if(chiso==0)break;

f=textwidth(S);

MouseText(l+f+6+((++chiso))*8,t+(b-t+textheight(S))/2,Color,C1);//,S);//so 8 la be ngang 1 ky tu

break;

case 79://end

f=textwidth(S);

MouseText(l+f+6,t+(b-t+textheight(S))/2,Color,C1);//,S); chiso=0;

break;

Trang 7

case 80:

case 81:

case 82:break;

case 83://del

setcolor(GREEN);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

DelChar(strlen(S));//,chiso);

f=textwidth(S);

setcolor(YELLOW);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

MouseText(l+f+6+chiso*8,t+(b-t+textheight(S))/2,Color,C1);//,S);//so 8 la be ngang 1 ky tu

break;

}break;

case 8://backspace

setcolor(Color);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

chiso ;

DelChar(strlen(S));

setcolor(C1);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

MouseText(l+textwidth(S)+6+chiso*8,t+(b-t+textheight(S))/2,Color,C1);//,S);

break;

case 27://Esc

strcpy(S,stemp);return;

default:

if(a>=32&&a<=126)

{

if((strlen(S)+2)*8>(r-l))break;

setcolor(GREEN);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

InsertChar(a);

setcolor(C1);

outtextxy(l+5,t+(b-t-textheight(S))/2,S);

MouseText(l+textwidth(S)+6+chiso*8,t+(b-t+textheight(S))/2,Color,C1);//,S);//so 8 la be ngang 1 ky tu

}

}

MouseText(l+textwidth(S)+6,t+(b-t+textheight(S))/2,Color,C1);//,S);//truong hop phim khong co nhiem vu nao dac biet

};

if (S[0]=='\0')

strcpy(S,stemp);

}

// -

void TEXTBOX::DelChar(int length)//xoa ky tu tai vi tri con tro

{

int vitri=length+chiso;

for(int i=vitri;i<length-1;i++)

S[i]=S[i+1];

if(chiso<0)

{

S[length-1]='\0';

chiso++;

}

}

// -

void TEXTBOX::InsertChar(char c)

{

int length=strlen(S);

for(int i=length;i>length+chiso;i )

Trang 8

S[i]=S[i-1];

S[length+1]='\0';

S[i]=c;

}

// -

int TEXTBOX::DuongDan(char s[])

{

int l=strlen(s),dem,dr;

char s1[200]="",s2[200]="";

dem=l-1;

if(s[1]==':')

switch(toupper(s[0]))

{

case 'A':dr=1;break;

case 'B':dr=2;break;

case 'C':dr=3;break;

case 'D':dr=4;break;

case 'E':dr=5;break;

}

else dr=_getdrive();

for(int i=l-1;i>0;i )

{

if(s[i]=='\\')

{

dem=i+1;

i=0;

}

else

dem=0;

}

strcat(s2,&s[dem]);

if(dem!=0) dem-=1;

strncpy(s1,s,dem);

strcpy(Path_var,s1);

strcpy(Name,s2);

return dr;

}

// -

void TEXTBOX::Get_name()

{

int n=strlen(Name);

int phan_ten=1;

for(int i=0;i<=n&&phan_ten;i++)

{

if(Name[i]=='.'&&i<n)

{

for(int j=n;j>i;j )

Name[j]=Name[j-1];

Name[j]='1';

Name[n+1]='\0';

phan_ten=0;

}

if(i==n)

{

Name[i]='1';

Name[i+1]='\0';

}

}

S[0]='\0';

strcat(S,Path_var);

strcat(S,"\\");

strcat(S,Name);

}

Trang 9

C SỬ DỤNG CHƯƠNG TRÌNH DOWNLOAD

Để sử dụng chương trình DowLoad, trước tiên phải về màn hình Dos (vì

chương trình được viết trong môi trương Dos, không quản lý được các chương trình điều khiển thiết bị sẳn có trong máy, thoát về Dos để tránh những xung đột chương trình)

Gọi tên Demo.exe, lúc đó màn hình sẽ hiện lên như sau:

Để chọn file bằng cách gõ phím, click chuột vào ô Open File

Nếu nhắp nút pulldown thì sẽ chọn file theo kiểu click chuột (hình sau) Chọn ổ đĩa, chọn loại file, chọn tên file và click OK để chọn file

Nút pulldown

Ô nhập text

Trang 10

Sau khi chọn xong file thì trong bảng “Free memory request” xuất hiện các địa chỉ đầu cuối, và dung lượng bộ nhớ sẽ sử dụng

Sau đó click Send để gởi dữ liệu đi

Khi quá trình truyền file kết thúc thì xuất hiện thông báo “Task is complete.”

Ngày đăng: 10/08/2014, 01:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm