nguyenquoctrung-hhk
Thành Viên PIF
Tham gia CLB lâu ròi, mà chưa đóng góp gì, thấy CLB cũng phát triển vê software, về moi móc cái bài tập giữa kỳ vừa ròi, tại thấy nó cũng có ích cho những anh em nào học môn truyền số liệu, mà không hiểu gì hết ,một mặt cũng cố C#.
Khi thầy giao đề tài này để thi giữa kì trong vòng 1 tháng, mình cũng thấy choáng. hiểu môn học đã khó, mà thầy còn chơi bức xô, không hướng dẫn gì hết, tại thầy dùng VB6, đứa nào học VB6 thầy mới hướng dẫn được , mình với kiến thức nông cạn về C#, nhưng cũng liều mạng 1 chuyến, sau 30 ngày đêm lăn lộn, rong chơi ở google, lụm nhặt những đoạn code rời rạc + kiến thức lập trình về C# để kết thành project, thành quả đạt được là mình có thêm kiến thức về C# + đạt điểm tối đa . nói ra không phải khoe với anh em, mà gửi lời nhắn nhủ đến mọi người, không có việc gì khó, cái nào mình gà thì cứ lao vào mà tìm kiếm học hỏi nâng cao kiến thức, tại vì mình đang trong quá trình "lụm nhặt" kiến thức, không có gì phải sợ thất bại . Nói vòng vo đã ròi, bi giờ vào phần chính .
Trước khi nói, vì project này khá dài, mình phải nói từ từ, không thể nào post 1 lúc lên được, nên anh em nào có câu hỏi gì thì mình có thể mở thread mới để mọi người vào thảo luận, tại lỡ post trong mục này làm ngắt quảng project khiến những người tham khảo đọc rất là khó chịu đấy .
! yêu cầu project :
_ xem qua giao thức kermit
_cơ chế truyền idle RQ
_mã BCS
_kiến thức về C# (cái này không phải có các class, method sẵn đâu, phải coi cách khởi tạo 1 method, truy suất 1 class như thế nào, nói chung lên google kiếm tài liệu lập trình cơ bản về C#)
ở đây mình sẽ không nhắc lại kĩ về lý thuyết truyền số liệu, chỉ nói sơ thui, còn anh em nào thắc mắc, thì thảo luận ở một box khác nhé .
*Phần 1 : Basic theory
_giao thức kermit là một giao thức truyền file giữa 2 máy tính. file này có thể thuộc nhiều loại như pdf, xls, doc, txt,... thì ở đây để đơn giản và dễ thì mình chọn file txt, tại vì file này chỉ dùng bảng mã ASCII thôi, còn mí cái file khác có thể dùng các bảng mã unicode hay UTF8,... rất phức tạp.
_cơ chế truyền theo idle RQ (stop ang wait) có nghĩa là trạm phát truyền xong và đợi tín hiệu phản hồi từ trạm nhận rồi mới truyền tiếp tục.
_mã BCS (block sum check) là là 1 hình thức sửa sai, khi tín hiệu truyền đi trên đường truyền, chắc chắn phải có lỗi xảy ra, tùy theo tốc độ, độ dài, kết cấu dây cab. mã này các bạn có thể xem trong tài liệu môn truyền số liệu. mình chỉ nói ngắn gọn là như thế này. dữ liệu file của mình là khá lớn, cho nên không thề nào bưng một cục bự mà quăng qua phía nhận, cho nên phương pháp là "chia để trị" có nghĩa mình sẽ cắt nhỏ cái file lớn thành từng frame. Ví dụ 1 file có độ dài 100 byte, thì mình sẽ cắt ra mỗi phần là 20 byte chẳng hạn rồi truyền đi. lý do tại sao phải làm như vậy thì trong các phần sau mình sẽ nói. thì khi nhận được 1 frame sẽ tiến hành sửa sai như sau :
_____giả sử có 1 frame 10 byte, thì mình sẽ sắp mỗi byte (8 bit) là một hàng, mỗi bit là 1 cột. Như vậy mình sẽ có 8 cột và n hàng. n : tùy theo số lượng byte của 1 frame. Sau đó mình sẽ kiểm tra bít parity chẵn theo hàng và parity lẻ theo cột (việc kiểm tra này tùy theo mình quy định), cuối cùng giao cột sai với hàng sai là bit sai. Chú ý là mả này chỉ sửa được có 1 lỗi, 2 hàng hoặc hai cột sai là không sửa được.
_C# tự nghiên cứu lý thuyết cơ bản nhé, nếu có thời gian thì mình sẽ mở 1 thread hướng dẫn 1 tí cơ bản về nền tảng C#.
_ cấu trúc của một frame kermit như sau :
--LEN : số kí tự của 1 khung tính từ sau LEN tới hết BCC
--SEQ : số thứ tự khung
--TYPE : ky ùtö ïcho bieát loïai khung, moãi loïai seõ co ùnoäi dung va ønhieäm vu ïkhaùc nhau
S (send initation): khung start của qua trình truyền
F (filename): chöùa teân file caàn truyeàn.
D (file data): döõ lieäu
Z: coøn goïi laø khung EOF (end of file)
B: coøn goïi laø EOT (End of transacsion), finish truyền.
Y: khung phaûn hoài tín hieäu ACK
N: khung phaûn hoài tín hieäu NAK
E (fatal error): khung baùo loãi
-- DATA : dữ liệu truyền đi
--BCC : mã BSC
--CR : kí tự kết thúc khung (tra bảng mã ASCII)
_Ở đây sẽ truyền qua cổng COM của máy tính, nếu anh em nào đã sử dụng FT232 thì có thể kết nối với USB của laptop, hình thức truyền để kiểm tra thì mình sẽ dùng cái jumper nối 2 đâu Rx và Tx trên cái board FT232 có nghĩa mình truyền xong òi tự nhận về lun .
continue ...
Khi thầy giao đề tài này để thi giữa kì trong vòng 1 tháng, mình cũng thấy choáng. hiểu môn học đã khó, mà thầy còn chơi bức xô, không hướng dẫn gì hết, tại thầy dùng VB6, đứa nào học VB6 thầy mới hướng dẫn được , mình với kiến thức nông cạn về C#, nhưng cũng liều mạng 1 chuyến, sau 30 ngày đêm lăn lộn, rong chơi ở google, lụm nhặt những đoạn code rời rạc + kiến thức lập trình về C# để kết thành project, thành quả đạt được là mình có thêm kiến thức về C# + đạt điểm tối đa . nói ra không phải khoe với anh em, mà gửi lời nhắn nhủ đến mọi người, không có việc gì khó, cái nào mình gà thì cứ lao vào mà tìm kiếm học hỏi nâng cao kiến thức, tại vì mình đang trong quá trình "lụm nhặt" kiến thức, không có gì phải sợ thất bại . Nói vòng vo đã ròi, bi giờ vào phần chính .
Trước khi nói, vì project này khá dài, mình phải nói từ từ, không thể nào post 1 lúc lên được, nên anh em nào có câu hỏi gì thì mình có thể mở thread mới để mọi người vào thảo luận, tại lỡ post trong mục này làm ngắt quảng project khiến những người tham khảo đọc rất là khó chịu đấy .
! yêu cầu project :
_ xem qua giao thức kermit
_cơ chế truyền idle RQ
_mã BCS
_kiến thức về C# (cái này không phải có các class, method sẵn đâu, phải coi cách khởi tạo 1 method, truy suất 1 class như thế nào, nói chung lên google kiếm tài liệu lập trình cơ bản về C#)
ở đây mình sẽ không nhắc lại kĩ về lý thuyết truyền số liệu, chỉ nói sơ thui, còn anh em nào thắc mắc, thì thảo luận ở một box khác nhé .
*Phần 1 : Basic theory
_giao thức kermit là một giao thức truyền file giữa 2 máy tính. file này có thể thuộc nhiều loại như pdf, xls, doc, txt,... thì ở đây để đơn giản và dễ thì mình chọn file txt, tại vì file này chỉ dùng bảng mã ASCII thôi, còn mí cái file khác có thể dùng các bảng mã unicode hay UTF8,... rất phức tạp.
_cơ chế truyền theo idle RQ (stop ang wait) có nghĩa là trạm phát truyền xong và đợi tín hiệu phản hồi từ trạm nhận rồi mới truyền tiếp tục.
_mã BCS (block sum check) là là 1 hình thức sửa sai, khi tín hiệu truyền đi trên đường truyền, chắc chắn phải có lỗi xảy ra, tùy theo tốc độ, độ dài, kết cấu dây cab. mã này các bạn có thể xem trong tài liệu môn truyền số liệu. mình chỉ nói ngắn gọn là như thế này. dữ liệu file của mình là khá lớn, cho nên không thề nào bưng một cục bự mà quăng qua phía nhận, cho nên phương pháp là "chia để trị" có nghĩa mình sẽ cắt nhỏ cái file lớn thành từng frame. Ví dụ 1 file có độ dài 100 byte, thì mình sẽ cắt ra mỗi phần là 20 byte chẳng hạn rồi truyền đi. lý do tại sao phải làm như vậy thì trong các phần sau mình sẽ nói. thì khi nhận được 1 frame sẽ tiến hành sửa sai như sau :
_____giả sử có 1 frame 10 byte, thì mình sẽ sắp mỗi byte (8 bit) là một hàng, mỗi bit là 1 cột. Như vậy mình sẽ có 8 cột và n hàng. n : tùy theo số lượng byte của 1 frame. Sau đó mình sẽ kiểm tra bít parity chẵn theo hàng và parity lẻ theo cột (việc kiểm tra này tùy theo mình quy định), cuối cùng giao cột sai với hàng sai là bit sai. Chú ý là mả này chỉ sửa được có 1 lỗi, 2 hàng hoặc hai cột sai là không sửa được.
_C# tự nghiên cứu lý thuyết cơ bản nhé, nếu có thời gian thì mình sẽ mở 1 thread hướng dẫn 1 tí cơ bản về nền tảng C#.
_ cấu trúc của một frame kermit như sau :
SOH--LEN--SEQ--TYPE--DATA--BCC--CR
--SOH : kí tự bắt đầu của một frame (tra trong bảng mã ASCII)--LEN : số kí tự của 1 khung tính từ sau LEN tới hết BCC
--SEQ : số thứ tự khung
--TYPE : ky ùtö ïcho bieát loïai khung, moãi loïai seõ co ùnoäi dung va ønhieäm vu ïkhaùc nhau
S (send initation): khung start của qua trình truyền
F (filename): chöùa teân file caàn truyeàn.
D (file data): döõ lieäu
Z: coøn goïi laø khung EOF (end of file)
B: coøn goïi laø EOT (End of transacsion), finish truyền.
Y: khung phaûn hoài tín hieäu ACK
N: khung phaûn hoài tín hieäu NAK
E (fatal error): khung baùo loãi
-- DATA : dữ liệu truyền đi
--BCC : mã BSC
--CR : kí tự kết thúc khung (tra bảng mã ASCII)
_Ở đây sẽ truyền qua cổng COM của máy tính, nếu anh em nào đã sử dụng FT232 thì có thể kết nối với USB của laptop, hình thức truyền để kiểm tra thì mình sẽ dùng cái jumper nối 2 đâu Rx và Tx trên cái board FT232 có nghĩa mình truyền xong òi tự nhận về lun .
continue ...