1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài giảng Giao tiếp máy tính

38 70 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 38
Dung lượng 332,11 KB

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

Nội dung

Giao tieáp quang baùo vôùi maùy tính ñöôïc thieát keá döïa treân cô sôû laäp trình WINDOWS. Chöông trình giao tieáp quang baùo ñöôïc vieát döïa treân öùng duïng thö vieän cuûa MFC. Ñaây laø kyõ thuaät laäp trình phaùt trieån phaàn meàn döïa vaøo thö vieän coù saün cuûa MFC. Laäp trình WINDOWS laø xöû lyù haøng loaït caùc söï kieän phaùt sinh trong khi chaïy öùng duïng. Vì vaäy maø chöông trình luoân luoân chaïy trong moät voøng laëp chôø söï kieän. Caùc söï kieän lieän quan ñeán phaàn meàm giao tieáp quang baùo

Trang 1

SVTH: Đặng Tiến Dũng Trang 145

I GIỚI THIỆU

Giao tiếp quang báo với máy tính được thiết kế dựa trên cơ sở lập trình WINDOWS Chương trình giao tiếp quang báo được viết dựa trên ứng dụng thư viện của MFC Đây là kỹ thuật lập trình phát triển phần mền dựa vào thư viện có sẵn của MFC

Lập trình WINDOWS là xử lý hàng loạt các sự kiện phát sinh trong khi chạy ứng dụng Vì vậy mà chương trình luôn luôn chạy trong một vòng lặp chờ sự kiện

Các sự kiện liện quan đến phần mềm giao tiếp quang báo:

1.1 Sự kiện tạo một file hình ảnh

Để tạo một file hình ảnh thì liên quan đến hàng loạt các sự kiện:

Sự kiện di chuyển chuột trong vùng làm việc thì chương trình sẽ báo cho biết chuột đang di chuyển ở tọa độ điểm ảnh nào Nếu ngoài vùng làm việc thì không có báo gì hết

Sự kiện nhấn chuột trái nếu đang trong vùng làm việc thì thay đổi điểm ảnh đó tuỳ thuộc vào thuộc tính của việc chọn màu Nếu ngoài vùng làm việu thì không có xử lý gì hết

Sự kiện nhấn chuột phải tạo một menu để chọn thuộc tính

1.2 Sự kiện quang báo gửi dữ liệu về

Tuỳ thuộc vào dữ liệu mà phần giao tiếp tiếp tục xử lý

Trang 2

SVTH: Đặng Tiến Dũng Trang 146

II NGUYÊN LÝ HOẠT ĐỘNG

Khi mở giao diện thì chương trình tự động chọn new file Lúc này chương trình cho phép người soạn thảo tác động vào để soạn thảo file hình ảnh cho quang báo Soạn thảo bằng cách sử dụng chuột Nhấn chuột trái trên vùng làm việc để vẽ điểm ảnh đó Để thay đổi màu sắc, kích thước chọn thuộc tính trên thanh công cụ Sau khi soạn thảo xong thì save lại với file có đuôi là (.HBA)

Do file văn bản trên WINDOWS có sẵn nên chỉ cần soạn file text bình thường sau đó save file có đuôi là (.VBA)

Gửi quang báo là truyền file đã biên soạn sẵn trên máy tính cho quang báo Khi mở giao diện gửi quang báo, đầu tiên máy tính sẽ gửi một mã lệnh thông báo cho quang báo biết là có sự tồn tại của máy tính đối với quang báo Khi quang báo nhận được mã lệnh này thì quang báo gửi dữ liệu trả lời Và nếu như máy tính nhận được thì việc bắt tay giữa máy tính và quang báo coi như thành công

Tiếp theo máy tính gửi tiếp một mã lệnh yêu cầu bên quang báo cho biết thuộc tính dung lượng Nếu máy tính nhận được dữ liệu thuộc tính này thì chương trình sẽ chuyển đổi thành dữ liệu hiển thị gúp cho người sử dụng biết đồng thời cho phép chọn file để gửi đi

Nếu không có vấn đề về dung lượng , tên file thì việc truyền file được bắt đầu Khi thanh tiến độ báo 100% thì việc truyền file là kết thúc

Trang 3

SVTH: Đặng Tiến Dũng Trang 147

III LƯU ĐỒ GIẢI THUẬT

3.1 Sự kiện di chuyển chuột

3.2 Sự kiện nhấn chuột trái

START

Vùng làm việc

?

Không hiển thị

Thoát.

N

Y Hiển thị tọa độ điểm ảnh

? Vẽ điểm ảnh tại toạ độ hiển thị

Trang 4

SVTH: Đặng Tiến Dũng Trang 148

3.3 Lưu đồ gửi quang báo

Biên dịch dữ liệu Truyền dữ liệu

START Lặp = 0

Cho phép chọn file

Thoát.

N

Y Bắt tay ?

N

Y

Lặp +1, Lặp =10 ?

Y

N

Đủ điều kiện ?

Trang 5

SVTH: Đặng Tiến Dũng Trang 149

IV PHẦN MỀM:

// hinhanhView.cpp : implementation of the CHinhanhView class

Trang 6

SVTH: Đặng Tiến Dũng Trang 150

// TODO: add construction code here

for (long i=0;i<2048;i++)

Trang 7

SVTH: Đặng Tiến Dũng Trang 151

void CHinhanhView::OnDraw(CDC* pDC)

{

CHinhanhDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CBrush choito, *choitocu;

if (m_array[i*16+j]=='c') choito.CreateSolidBrush(RGB(0, 255, 0));//mau xanh else

if (m_array[i*16+j]=='d') choito.CreateSolidBrush(RGB(255, 255, 0));//mau vang choitocu = pDC->SelectObject(&choito);

pDC->Rectangle (i*m_Size, j*m_Size, (i+1)*m_Size, (j+1)*m_Size);

pDC->SelectObject(choitocu);

choito.DeleteObject();

} }

Trang 8

SVTH: Đặng Tiến Dũng Trang 152

}

#endif //_DEBUG

// CHinhanhView message handlers

void CHinhanhView::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

Trang 9

SVTH: Đặng Tiến Dũng Trang 153

Trang 10

SVTH: Đặng Tiến Dũng Trang 154

Trang 11

SVTH: Đặng Tiến Dũng Trang 155

Trang 12

SVTH: Đặng Tiến Dũng Trang 156

// TODO: Add your command handler code here

// TODO: Add your command handler code here

char szFilters[] ="Quang bao files (*.hba)";

CFileDialog dlg(true, _T("hba"), _T("*.hba"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilters);

if (dlg.DoModal () == IDOK)

{

m_Fname =dlg.GetPathName (); // L.y tên file open CStdioFile f2(m_Fname, CFile::modeRead | CFile ::typeBinary); f2.Read(m_array,2048);

SetScrollPos(SB_HORZ,0,true);

CClientDC dc (this);

OnDraw(&dc);

Trang 13

SVTH: Đặng Tiến Dũng Trang 157

}

}

void CHinhanhView::OnFileSaveAs()

{

// TODO: Add your command handler code here

char szFilters[] ="Quang bao files (*.hba)";

CFileDialog dlg(false, _T("hba"), _T("*.hba"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilters);

if (dlg.DoModal () == IDOK)

{

m_Fname =dlg.GetPathName (); // L.y tên file open CStdioFile f2(m_Fname, CFile::modeCreate |CFile::modeWrite | CFile ::typeBinary);

Trang 14

SVTH: Đặng Tiến Dũng Trang 158

Trang 15

SVTH: Đặng Tiến Dũng Trang 159

DDX_Control(pDX, IDC_PROGRESS1, m_SB);

DDX_Radio(pDX, IDC_RADIO3, m_Kieufile);

DDX_Control(pDX, IDC_MSCOMM1, m_Com);

DDX_Radio(pDX, IDC_KHOIDONG, m_khoidong);

Trang 16

SVTH: Đặng Tiến Dũng Trang 160

// EXCEPTION: OCX Property Pages should return FALSE

else GetDlgItem(IDC_TEN)->SetWindowText("");

m_Delay++;

if(m_Delay==20)

{ GetDlgItem(IDC_TEN)->SetWindowText("");

AfxMessageBox("Co loi truy cap cong com 1

!\nBan co gang kiem tra lai.");

Trang 17

SVTH: Đặng Tiến Dũng Trang 161

str.Format("Dung lượng: 20480 byte\nSử dụng: %ld

byte\nCòn trống: %ld byte",t1,t2);

GetDlgItem(IDC_TEN)->SetWindowText(str); GetDlgItem(IDC_SENTO)->ShowWindow(true); GetDlgItem(IDC_PHONG)->ShowWindow(false); GetDlgItem(IDC_PHONG)->ShowWindow(true);

} break;

m_Com.SetOutput(COleVariant(array));

if(i%6==0) {

m_SB.SetPos(i/6);

CString str;

str.Format("%d",i/6);

GetDlgItem(IDC_TYLE1) ->SetWindowText(str+" %"); }

} }

else {

if(t==0)t=1;

for(long

i=0;i<m_Chuoivanban.GetSize();i++)

Trang 18

SVTH: Đặng Tiến Dũng Trang 162

{ array[0]=m_Chuoivanban[i];

m_Com.SetOutput(COleVariant(array));

if(i%t==0) {

m_SB.SetPos(i/t);

CString str;

str.Format("%d",i/t);

GetDlgItem(IDC_TYLE1) ->SetWindowText(str+" %"); }

} array[0]=255;

m_Com.SetOutput(COleVariant(array)); array[0]=252;

{ array[0]=254;

m_Com.SetOutput(COleVariant(array));

} array[0]=255;

}

Trang 19

SVTH: Đặng Tiến Dũng Trang 163

else {

// TODO: Add your control notification handler code here

CString fname, tenfile;

UpdateData(true);

if(m_Kieufile == 1)

{

char szFilters[] ="Quang bao files (*.hba)";

CFileDialog dlg(true, _T("hba"), _T("*hba"),

OFN_OVERWRITEPROMPT, szFilters);

if (dlg.DoModal () == IDOK) {

Trang 20

SVTH: Đặng Tiến Dũng Trang 164

if(m_Dungluong<2)AfxMessageBox("Bo nho bi day!

");

else {

} }

else

{

char szFilters[] ="Quang bao files (*.vba)";

CFileDialog dlg(true, _T("vba"), _T("*vba"),

OFN_OVERWRITEPROMPT, szFilters);

if (dlg.DoModal () == IDOK) {

else {

Trang 21

SVTH: Đặng Tiến Dũng Trang 165

} }

SafeArrayGetUBound(varInput.parray,1,&u);

for(ix=l;ix<=u;ix++)

{ SafeArrayGetElement(varInput.parray,&ix,&bit); ByteBuf.Add(bit);

Trang 22

SVTH: Đặng Tiến Dũng Trang 166

} }

Trang 23

SVTH: Đặng Tiến Dũng Trang 167

array.Add(53);

} break;

{ array.Add(243);

array.Add(53);

} break;

{ array.Add(244);

Trang 24

SVTH: Đặng Tiến Dũng Trang 168

array.Add(53);

} break;

{ array.Add(240);

array.Add(53);

} break;

Trang 25

SVTH: Đặng Tiến Dũng Trang 169

array.Add(139);

} break;

{ array.Add(238);

array.Add(139);

} break;

{ array.Add(239);

array.Add(139);

} break;

Trang 26

SVTH: Đặng Tiến Dũng Trang 170

{ array.Add(240);

array.Add(139);

} break;

Trang 27

SVTH: Đặng Tiến Dũng Trang 171

Trang 28

SVTH: Đặng Tiến Dũng Trang 172

if((str.GetAt(i)=='^')&&(i+1<str.GetLength()))

{ switch (str.GetAt(i+1))

Trang 29

SVTH: Đặng Tiến Dũng Trang 173

} break;

case 'È':

{ array.SetAt(array.GetSize()-1,matam-3); array.InsertAt(array.GetSize()-1,247);

}

Trang 30

SVTH: Đặng Tiến Dũng Trang 174

break;

case 'Ú':

{ array.SetAt(array.GetSize()-1,matam-3); array.InsertAt(array.GetSize()-1,249);

} break;

case 'Ü':

{ array.SetAt(array.GetSize()-1,matam-3); array.InsertAt(array.GetSize()-1,251);

} break;

case 'Ë':

{ array.SetAt(array.GetSize()-1,matam-3); array.InsertAt(array.GetSize()-1,234);

} break;

case 'Á':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,245);

} break;

case 'À':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,247);

} break;

case 'Å':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,249);

} break;

case 'Ã':

{

Trang 31

SVTH: Đặng Tiến Dũng Trang 175

array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,251);

} break;

case 'Ä':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,234);

} break;

} }

{

matam=152;

array.Add(150);

} if(str.GetAt(i)=='ơ')array.Add(154);

if(str.GetAt(i)=='u')array.Add(166);

if(str.GetAt(i)=='ư')array.Add(168);

if(str.GetAt(i)=='y')array.Add(177);

if(i+1<str.GetLength())

Trang 32

SVTH: Đặng Tiến Dũng Trang 176

switch (str.GetAt(i+1))

{ case 'ê':array.SetAt(array.GetSize()-1,matam-2);

} break;

case 'è':

{ array.SetAt(array.GetSize()-1,matam-2); array.InsertAt(array.GetSize()-1,220);

} break;

case 'ú':

{ array.SetAt(array.GetSize()-1,matam-2); array.InsertAt(array.GetSize()-1,222);

} break;

case 'ü':

{ array.SetAt(array.GetSize()-1,matam-2); array.InsertAt(array.GetSize()-1,224);

}

Trang 33

SVTH: Đặng Tiến Dũng Trang 177

break;

case 'ë':

{ array.SetAt(array.GetSize()-1,matam-2); array.InsertAt(array.GetSize()-1,234);

} break;

case 'á':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,218);

} break;

case 'à':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,220);

} break;

case 'å':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,222);

} break;

case 'ã':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,224);

} break;

case 'ä':

{ array.SetAt(array.GetSize()-1,matam); array.InsertAt(array.GetSize()-1,234);

} break;

} }

Trang 34

SVTH: Đặng Tiến Dũng Trang 178

t+=pow(2,7-(j-k));

if(j==7)

{ ma.Add(t);

t=0;

k=8;

} }

t+=pow(2,7-(j-k));

if(j==7)

{ ma.Add(t);

t=0;

k=8;

} }

ma.Add(t);

Trang 35

SVTH: Đặng Tiến Dũng Trang 179

V HƯỚNG DẪN SỬ DỤNG

Khi mở giao diện soạn file cho quang báo chương trình tự động chọn một file mới như sau:

Trang 36

SVTH: Đặng Tiến Dũng Trang 180

Để vễ hình bằng cách nhấn chuột trái vào điểm ảnh đó Để thay đổi màu sắc, kích thước chọn trên thanh công cụ Một ví dụ cho việc tạo ứng dụng file hình ảnh

Quá trình truyền một file sang quang báo

Đầu tiên chọn menu gửi quang báo

Nếu việc kết nối đúng thì sẽ cho phép chọn file để truyền

Trang 37

SVTH: Ñaịng Tieân Duõng Trang 181

Coøn neâu bò loêi thì chöông trình seõ cháy lieđn túc voøng laịp trong 10 laăn ñeơ coẫ gaĩng tìm quang baùo

Neâu khođng coù quang baùo hoaịc coù loêi xạy ra thì chöông trình seõ thođng baùo loêi vaø keât thuùc chöông trình

Trang 38

SVTH: Đặng Tiến Dũng Trang 182

Việc cài đặt khởi động quang báo hoặc không sẽ giúp cho quang báo khởi động lại hay không sau khi truyền file xong

Khi chọn file xong thì chương trình kiểm tra bộ nhớ nếu đủ điều kiện thì chương trình sẽ biên dịch và bắt đầu truyền Khi kết thúc truyền, thanh tiến độ báo 100%

Ngày đăng: 13/04/2019, 16:02

TỪ KHÓA LIÊN QUAN

w