Cơ sở dữ liệu
5.6 ĐIỀU KHIỂN LUỒNG LỆNH
Tuy nhiên, một vấn đề đặt ra là: do hệ thống được cấu thành từ các chương trình con cho các mục đich khác nhau, rất có thể trong lúc chúng ta gửi lệnh ra mơđem, thì ngay trước đó, chương trình con gửi tin nhắn đi cũng đang kích hoạt và đang đợi dấu nhắc “>” trả lại từ mođem. Đúng vào thời điểm này, nếu một lệnh khác được gửi ra mođem, mođem sẽ không hiểu và sẽ bị rơi vào trạng thái “treo” và hệ thống sẽ ngừng hoạt động. Nói tóm lại là có thể xảy ra trường hợp hai chương trình con (chương trình gửi và đọc tin nhắn) gửi lệnh ra mođem cùng một lúc, để tránh trường hợp này, kỹ thuật dùng các „cờ‟ để báo hiệu một lệnh đang được thực hiện được xử dụng. Các chương trình con sẽ kiểm tra giá trị của các „cờ‟ này trước khi gửi lệnh ra môđem.
Do
DoEvents Wait_Random
Loop Until ((bSending = False)) and ((bReceiving =False)) bReceiving = True
Fetch_SMS
Đoạn chương trình trên minh họa một qui trình kiểm tra trước khi thực hiện lệnh đọc tin nhắn từ mođem, chương trình sẽ đợi cho các lệnh gửi và nhận trước đó kết thúc bằng cách chờ một khoảng thời gian Wait_Random trước khi thực hiện lệnh. Tuy nhiên trước khi thực hiện lệnh, nó cũng đặt cờ bReceiving lên giá trị
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
True để thơng báo rằng có lệnh đang được thao tác với mođem. Khoảng thời gian Wait_Random nhận giá trị ngẫu nhiên trong khoảng từ 8 đến 20 ms, sở dĩ phải đặt giá trị ngẫu nhiên nhằm để tránh trường hợp hai chương trình con cùng đợi một lúc và lại cùng bắt đầu gửi lệnh ra cùng một lúc.