47
dc145.4shared.com/doc/q1vpAyI-/preview.html Hướng dẫn giao tiếp máy tính từ A đến Z(Hình ảnh) Bạn cần chuẩn bị các công cụ cho việc mô phỏng giao tiếp máy tính với VĐK 8051. Chương trên máy tính viết bằng C#, nên bạn cần mua đĩa C# Express Edition, bản này có thể dùng miễn phí. Proteus 7, bạn có thể kiếm đâu đó trên diễn đàn, đây là chương trình dùng để mô phỏng. Còn viết chương trình cho 8051 bạn có thể dụng notepad, tuy nhiên mình gợi ý là dùng MCS- 51 IDE cho tiện viết chương trình và biên dịch, có thể download ở http://machso.com . Còng chương trình tạo cổng COM ảo bạn có thể tìm kiếm trên Internet với từ khóa Virtual Comport, nếu bí quá có thể email cho mình (mình không nên public mấy cái liên quan đến bản quyền). Sau đây là toàn bộ loạt ảnh hướng dẫn và file đính kèm là toàn bộ mã nguồn. Chú ý là file dịch của C# nằm trong thư mục {C# project}/bin/debug/

Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

Embed Size (px)

Citation preview

Page 1: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Hướng dẫn giao tiếp máy tính từ A đến Z(Hình ảnh)

Bạn cần chuẩn bị các công cụ cho việc mô phỏng giao tiếp máy tính với VĐK 8051. Chươngtrên máy tính viết bằng C#, nên bạn cần mua đĩa C# Express Edition, bản này có thể dùngmiễn phí. Proteus 7, bạn có thể kiếm đâu đó trên diễn đàn, đây là chương trình dùng để môphỏng.Còn viết chương trình cho 8051 bạn có thể dụng notepad, tuy nhiên mình gợi ý là dùng MCS-51 IDE cho tiện viết chương trình và biên dịch, có thể download ở http://machso.com.Còng chương trình tạo cổng COM ảo bạn có thể tìm kiếm trên Internet với từ khóa VirtualComport, nếu bí quá có thể email cho mình (mình không nên public mấy cái liên quan đến bảnquyền).Sau đây là toàn bộ loạt ảnh hướng dẫn và file đính kèm là toàn bộ mã nguồn.Chú ý là file dịch của C# nằm trong thư mục {C# project}/bin/debug/

Page 2: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 3: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 4: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 5: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 6: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 7: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 8: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 9: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 10: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 11: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 12: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 13: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 14: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 15: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 16: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 17: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 18: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

File gửi kèm

GTMT.zip (92.2 KB, 6142 views)

Phần 2:

Page 19: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 20: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 21: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 22: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 23: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 24: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 25: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 26: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 27: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 28: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 29: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 30: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 31: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 32: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 33: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 34: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 35: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 36: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 37: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 38: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 39: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 40: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 41: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Page 42: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Nếu bạn muốn coi với kích cỡ lớn hơn có thể xemở:http://picasaweb.google.com.vn/phamminhtuan.04/GTMT/

Các tổng đài PABX thông thường khi đẩy dữ liệu cước ra sẽ có định dạng riêng. Ví dụ: |303 | | |0908168535

|17:32|00:00:33| 0.00| 0|N|B|A|

- Một bản ghi thông thường gồm thông tin: Số chủ gọi, Số bị gọi, trung kế, ngày gọi, giờ gọi, thời gian gọi. Và thường

là kết thúc một bản ghi sẽ là ký tự xuống dòng, về đầu dòng (mã ascii 10,13; trong VB là vbCrlf). --> Cứ đón dữ liệu vào một xâu nào đó, khi bắt được ký tự vbCrlf thì ta mới phân tích dữ liệu vừa đón được.

Các thuộc tính của MSComm

MSComm là một điều khiển ActiveX dùng trong truyền thông nối tiếp. Các tính chất của điềukhiển này được dùng để thiết lập giao tiếp với các thiết bị ngoại vi qua cổng RS232.

Điều khiển MSComm trong Visual Basic

Tất cả các tính chất này có thể tìm tại thư viện MSDN July 2001 theo đường dẫn như sau ở tabcontents:

MSDN Library ‐ July 2001 / Visual Tools and Languages/ Visual Studio 6.0Documentation / Visual Basic Documentation / Reference/ Control Reference / ActiveXControl/ MSComm Control

Page 43: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Các tính chất của MSComm được sắp xếp theo chức năng:

Thiết lập tham số cho cổng:

+ CommID:trả lại handles đồng nhất tới thiết bị truyền thông, có kiểu Long. Tính chất nàykhông có lúc thiết kế mà chỉ có khi thi hành, thuộc tính này là ReadOnly.

+ CommPort:dạng object.CommPort = value. Value là chỉ số của cổng Com có giá trị từ 1 ‐> 16 và mặc định có giá trị =1. Các bạn cần phải thiết lập thông số này trước khi mở cổng. Sẽcó lỗi error 68 (Device unavailable) nếu như không mở được cổng này.

+ InBuferSize:thiết lập hoặc trả lại kích thước của bộ đệm nhận, tính = byte. Mặc định là1024 byte. Các bạn không được nhầm lẫn với đặc tính InBufferCount là số byte đang chờtrong bộ đệm nhận.

+ InputLen :object.InputLen [ = value ] thiết lập hoặc trả lại số byte mỗi lần thuộc tính Inputđọc trong bộ đệm nhận. Mặc định giá trị Value=0 tức là thuộc tính Input sẽ đọc hết nội dungcủa bộ đệm nhận khi thuộc tính này được gọi. Nếu số kí tự trong bộ đệm nhận không =InputLen thì thuộc tính Input sẽ trả lại kí tự rỗng “”. Ví thế bạn cần phải chọn cáchkiểmtraInBufferCount để chắc chắn số kí tự yêu cầu đã có đủ trước khi dùng lệnh .Input. Tính chấtnày rất là có ích khi đọc dữ liệu một máy mà dữ liệu ra được định dạng bằng các khối có kíchthước cố định.

+ InputMode:object.InputMode [ = value ] .

Value = 0 hay = comInputModeText dữ liệu nhận được dạng văn bản kiểu kí tự theo chuẩnANSI. Dữ liệu nhận được sẽ là một sâu. Value=1 hay = comInputModeBinary dùng nhận mọikiểu dữ liệu như kí tự điều khiển nhúng, kí tự NULL,.. Giá trị nhận được từ Input sẽ là mộtmảng kiểu Byte.

+ NullDiscard:object.NullDiscard [ = value ] tính chất này quyết định kí tự trống có đượctruyền từ cổng đến bộ đệm nhận hay không. Nếu value= True kí tự này không được truyền.value = false kí tự trống sẽ được truyền. Kí tự trống được định nghía theo chuẩn ASCII là kítự 0 – chr$(0).

+ OutBuferSize:giống như InBuferSize, mặc định là 512.

+ ParityReplace:thiết lập và trả lại kí tự thay thế kí tự không đúng trong lỗi giống nhau.

+ PortOpen:thiết lập và trả lại tính trạng của cổng(đóng hoặc mở).

object.PortOpen [ = value ]. value = true cổng mở. value =false cổng đóng và xóa toàn bộ dữ

Page 44: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

liệu trong bộ đệm nhận và truyền. Cần phải thiết lập thuộc tính CommPort đúng với tên củacổng trước khi mở cổng giao tiếp. Thêm vào đó, cổng giao tiếp của thiết bị của bạn phải hỗtrợ giá trị trong thuộc tính Setting thì thiết bị của bạn mới hoạt động đúng, còn không thì nósẽ hoạt động rất dở hơi nếu không nói là nó chạy không tốt. Đường DTR và RTS luôn giữ lạitrạng thái của cổng.

+ RthresHold:object.Rthreshold [ = value ] value kiểu số nguyên. Thiết lập số kí tự nhậnđược trước khi gây lên sự kiện comEvReceive. Mặc định = 0 tức là không có sự kiệnOnComm khi nhận được dữ liệu. Thiết lập = 1 tức là sự kiện OnComm xảy ra khi bất kì kítự nào được chuyển đến bộ đệm nhận.

+ Settings:object.Settings [ = value ] thiết lập hoặc trả lại các thông số tần số baud, bít dữliệu, bít chẵn lẻ, bít stop. Nếu Value không có giá trị khi mở sẽ gây ra lỗi 380 (Invalidproperty value).

+ SThreshold:thiết lập và và trả lại số kí tự nhỏ nhất được cho phép trong bộ đệm gửi để xảyra sự kiện OnComm = comEvSend . Theo mặc định giá trị này = 0 tức là khi truyền sẽ khônggây ra sự kiện OnComm. Nếu thiết lập thông số này =1 thì sự kiện OnComm xảy ra khi bộđệm truyền rỗng. Sự kiện OnComm = comEvSend chỉ xảy ra khi mà số kí tự trong bộ đệmtruyền nhỏ hơn hoặc = Sthreshold. Nếu số kí tự trong bộ đệm này luôn lớn hơn Sthreshold thìsự kiện này không thể xảy ra.

Truyền nhận dữ liệu:

+ CommEvent:trả lại phần lớn sự kiện giao tiếp hoặc có lỗi. CommEvent xảy ra khi có lỗihoặc khi xảy ra sự kiện nào đó. Sau đây là một số hằng số lỗi:

Sự kiện Giá trị Miêu tả sự kiệncomEventBreak 1001 Xảy ra khi nhận được một tín hiệu Break.comEventFrame 1004 Lỗihệ thống. Phần cứng phát hiện ra một lỗi hệ thốngcomEventOverrun 1006 Xảy ra khi cổng tự tràn( Overrun). Một kí tự không đượcđọc từ phần cứng trước khi kí tự tiếp theo tới và do đó kí tựnày bị mất.

comEventRxOver 1008 Xảy ra khi bộ đệm nhận bị tràn. Không có đủ chỗ cho dữ liệutrong bộ đệm nhận.comEventRxParity 1009 Lỗi Parity. Phần cứng phát hiện ra một lỗi Parity.comEventTxFull 1010 xảy ra khi bộ đệm truyền bị đầy. Bộ đệm truyền bị đầy trong khi ghi dữ liệu lớn vào bộ đệmcomEventDCB 1011 Một lỗi không mong muốn khi đang khôi phục lại lỗi điều khiểnthiết bị( DCB – Device Control Block) cho cổng

Page 45: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

Một số sự kiện :

Sự kiện Giá trị Miêu tả sự kiệncomEvSend 1 Xảy ra khi số kí tự trong bộ đệm truyền nhỏ hơn giá trịSthresHold.comEvReceive 2 Xảy ra khi bộ đệm nhận được số kí tự bằng giá trịRthresHold. Sự kiện này được tạo ra liên tục cho tới khi bạn dùng thuộc tính Input để lấy hếtdữ liệu từ trong bộ đệm nhận.RcomEvCTS 3 Xảy ra khi có thay đổi trong đường CTS( Clear To Send)comEvDSR 4 Xảy ra khi thay đổi trong đường DSR( Data Set Ready). Sựkiện này chỉ xảy ra khi đường DSR thay đổi từ 1 ‐> 0.comEvCD 5 Xảy ra khi có thay đổi trong đường CD( Carrier Detect)comEvRing 6 Phát hiện chuông (Ring).Một số UART không hỗ trợ sựkiện này.comEvEOF 7 Xảy ra khi nhận được kí tự kết thúc file ( kí tự 26 trong bảng mã ASCII)

+ EOFEnable :object.EOFEnable [ = value ] quyết định các hành động nếu MSComm tìmthấy kí tự kết thúc file. Nếu value=true khi tìm thấy kí tự kết thúc file thì sẽ gây lên sự kiệncomEvEOF trong OnCommEvent. Nếu value= false thì sẽ không gây lên sự kiện này.

+ InBufferCout:trả lại số kí tự đang có trong bộ đệm nhận Bạn có thể xoá bộ đệm nhận bằngcách đặt thuộc tính này =0 . Không nhầm với thuộc tính InBufferSize là tổng kích thước củabộ đệm nhận.

+ Input:nhận và xoá dữ liệu trong bộ đệm nhận.

Nếu InputMode là comInputModeText thì giá trị trả về sẽ là một xâu tức có kiểu String , dữliệu dạng text trong một biến kiểu Variant. Nếu InputMode = comInputModeBinary thì thuộctính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng một mảng kiểu byte trong một biến Variant.

+ OutBufferCount:trả lại số kí tự trong bộ đệm truyền.

+ Output:ghi dữ liệu vào bộ đệm truyền. có thể truyền kiểu text hoặc kiểu nhị phân. Nếutruyền bằng kiểu text thì cho một biến Variant = kiểu String, nếu truyền kiểu nhị phân thì chocho Output= variant = một mảng kiểu Byte.

Bắt tay( handshaking):

+ Break :thiết lập hoặc xoá tín hiệu. object.Break [ = value] value = true hoặc false. Khi setvalue= true thì thông số Break này sẽ gửi một tín hiệu break. Tín hiệu break trì hoàn việc

Page 46: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

truyền dữ liệu và đưa đường truyền vào trạng thái break tới khi mà value = false.

+ CDHolding:quết định xem sự truyền này đến đâu bằng cách truy vấn đường CD( CarrierDetect). Carrier Detect là tín hiệu gửi từ modem tới máy tính kết nối với nó thống báo rằngnó đang online. Nếu giá trị = true thì nó đường CD đang ở mức cao, nếu = false thì đường dâynày đang ở mức thấp. Tính chất này không có trong lúc thiết kế chỉ có trong khi chạy chươngtrình.Carrier Detect được biết như là Receive Line Signal Detect (RLSD).

+ CTSHolding:quết định khi nào bạn gửi dữ liệu bằng cách truy vấn trạng thái đường ClearTo Send (CTS). Thông thường tín hiệu CTS được gửi từ modem tới máy tính kết nối với nó đểbáo rằng đang quá trình truyền dữ liệu. Thuộc tính Readonly chỉ xuất hiện khi chạy chươngtrình. Đường Clear To Send dùng trong RTS/CTS (Request To Send/Clear To Send) bắt tayphần cứng. CTSHolding cho bạn một cách để tự tay dò đường Clear To Send nếu bạn cần biếttrạng thái của nó.

+ DSRHolding:biết trạng thái của đường Data Set Ready (DSR). Tín hiệu Data SetReadytruyền từ modem tới máy tính nối với nó để thông báo rằng modem đã sẵn sàng hoạt động.Tính chất này dùng khi viết Data Set Ready/Data Terminal Ready handshaking routine chomáy Data Terminal Equipment (DTE)‐ máy trang bị đầu cuối dữ liệu.

+ DTREnable:tính chất này quyết định khi nào cho phép đường Data Terminal Ready (DTR)trong truyền thông. Tín hiệu DTR gửi từ máy tính tới modem đẻ báo rằng máy tính sẵn sàng lànơi nhận dữ liệu. Khi DTREnable = true thì đường Data Terminal Ready set lên cao khi cổngmở, và thấp khi cổng đóng. Nếu DTREnable = false thì đường đó luôn mức thấp. Trong phầnlớn trường hợp set đường Data Terminal Ready thành thấp để hang up telephone.

+ Handshaking:thiết lập và trả lại giao thức bắt tay phần cứng. object.Handshaking [ = value].Các giá trị của value:comNone 0 (Mặc định) Không bắt taycomXOnXOff 1 Bắt tay XON/XOFFcomRTS 2 Bắt tay RTS/CTS (Request To Send/Clear To Send)comRTSXOnXOff 3 Dùng cả bắt tay Request To Send and XON/XOFF

Handshakingchỉ là giao thức truyền thông nội tại quyết định bởi dữ liệu nào đượctruyền từ cổng phần cứng tới bộ đệm nhận. Khi kí tự của dữ liệu tới cổng nối tiếp, thiết bịtruyền thông sẽ chuyển nó vào trong bộ đệm nhận và chương trình của bạn có thể đọc chúng.Nếu không có bộ đệm dữ liệu hoặc chương trình của bạn cần đọc kí tự trực tiếp từ phần cứng ,bạn có thể mất dữ liệu bởi vì kí tự từ phần cứng đến rất nhanh. Giao thức Handshaking đảmbảo dữ liệu không bị mất, khi dữ liệu đến cổng quá nhanh thì thiết bị truyền thông sẽ chuyểndữ liệu vào trong bộ đệm nhận.

Page 47: Hướng dẫn giao tiếp máy tính từ com(Hình ảnh)

dc145.4shared.com/doc/q1vpAyI-/preview.html

+RTSEnable:quết định khi nào cho phép đường Request To Send (RTS), Tín hiệu RTS từmáy tính tới modem để yêu cầu được tryền dữ liệu. Khi RTSEnable = true thì đường RTSmức cao khi cổng mở, tích mức thấp khi cổng đóng. Và hiển nhiên khi RTSEnable thì đườngRTS luôn mức thấp.RTS dùng trong RTS/CTS hardware handshaking. RTSEnable cho phép bạndò đường RTS khi cần biết tình trạng của đường này. Các tính chất trên không có lúc thiết kếgiao diện mà chỉ có lúc chạy chương trình ( dùng trong viết code).

Read more:http://www.ant7.com/forum/forum_posts.asp?TID=2310&PN=1#ixzz1GMqLes00