Tại sao mọi người sử dụng các lệnh AT trong giao tiếp nối tiếp?


21

Tôi cần biết tại sao mọi người trong các hệ thống nhúng sử dụng lệnh AT?
Khi tôi hỏi mọi người rằng đó là một tiêu chuẩn.

Vì vậy, câu hỏi của tôi là: "AT" có nghĩa là gì? Tại sao mọi người cứ nói đó là một tiêu chuẩn?


1
+++ ATH0 có ai không?
kinokijuf

@kinokijuf bạn có ý gì?
xsari3x

1
why people in embedded systems use AT commands- không có gì được nhúng cụ thể về câu hỏi của bạn hoặc việc sử dụng AT trên một liên kết nối tiếp. Có thể là bạn đã thấy điều này trên một hệ thống nhúng, nhưng nguồn gốc của nó được giải thích bên dưới và không dành riêng cho các hệ thống nhúng. (Cẩn thận không vẽ những thứ quá rộng bằng cọ.)
Radian

1
Lệnh AT thậm chí đã được triển khai trong một thứ gọi là modemu: chương trình Unix tạo ra một thiết bị giả chủ / nô lệ và mô phỏng một modem thực sự đi qua telnet. Bạn "quay số" một máy chủ với ATD<hostname>. Điều buồn cười là chương trình ra đời gần như chính xác vào thời điểm tôi cần, khoảng năm 1996: phiên bản 0.0.1. Tôi không cần nó kể từ đó. Và nó vẫn là 0.0.1! Tôi đã sử dụng nó cùng với minicom để thực hiện chuyển zmodem qua telnet đến các máy chủ từ xa chỉ có thể đạt được theo cách đó.
Kaz

@kinokijuf Xin đừng bình luận. Bạn vừa làm StackOverflow treo lên tôi! :-)
Curt J. Sampson

Câu trả lời:


31

Một chi tiết hiếm khi được đánh giá cao về các lệnh "AT" là nhiều modem sẽ khởi động ở chế độ "auto-baud / auto-parity". Ban đầu, modem sẽ bắt đầu không thực sự giải mã bất kỳ dữ liệu nối tiếp nào, mà chỉ đơn giản là xem xung thấp và xung cao có độ rộng phù hợp với cùng khoảng thời gian bit hợp lệ (ví dụ: 3.333ms cho 300 baud, 833us cho 1200 baud, v.v. .). Khi tìm thấy điều đó, họ sẽ thấy nếu xung thấp tiếp theo có chiều rộng gấp năm lần. Nếu vậy, họ sẽ theo dõi một mức cao thấp khác hoặc cao hơn ít nhất 1,5 lần. Việc tìm một trong hai sẽ chỉ ra rằng modem vừa nhìn thấy 0x41 hoặc 0xC1 (tức là "A") của tốc độ truyền được xác định. Nó sẽ cho biết thêm máy tính đính kèm đang sử dụng 8-N-1 hoặc 7-E-1 hoặc máy tính đang sử dụng 7-N-1 hoặc 7-O-1. Trong cả hai trường hợp, nó sẽ tìm ký tự tiếp theo là 0x54 hoặc 0xD4 (tức là "T"). Điều đó sẽ cho phép modem phân loại thêm các cài đặt độ dài và chẵn lẻ của ký tự.

Lưu ý rằng mọi thứ nhận được trước "AT" sẽ bị bỏ qua. Nếu tiếng vang được bật, dữ liệu sẽ được gửi trở lại máy tính đính kèm chỉ bằng cách phản chiếu tất cả các chuyển đổi dòng mà không có bất kỳ giải mã nối tiếp nào. Nếu một máy tính đã gửi dữ liệu trước "AT", ví dụ như 247 baud, nó sẽ bị dội lại ở tốc độ đó.

Ngày nay, một số thiết bị sử dụng "A" ban đầu để phát hiện tốc độ baud tự động, nhưng thực tế, các lệnh bắt đầu bằng "AT" về cơ bản là một sự tò mò lịch sử.


1
ehm ... ý bạn là gì "7-N-1" ??
xsari3x

1
Bảy bit dữ liệu, không có chẵn lẻ, một bit stop. Cho phép dữ liệu được gửi nhanh hơn 11% so với 8-N-1, nếu không ai sẽ gửi bất kỳ dữ liệu nào với tập bit cao.
supercat

Ngoại trừ việc tự động bauding là (và) thường được thực hiện trên phần +++ của lệnh +++ AT hoặc +++ <Guard time> AT. Xem en.wikipedia.org/wiki/Time_Indep khu_Escape_Sequence
david

1
@david: Tôi không thấy bất kỳ đề cập nào về tính năng tự động trong bài viết trình tự thoát độc lập với thời gian, tôi cũng chưa bao giờ thấy modem chấp nhận +++ ở bất kỳ tốc độ truyền nào khác ngoài tốc độ truyền mà nó đang sử dụng để liên lạc. Các ký tự 0x9E 0x86 được gửi ngược lại ở 2400-8-N-1 (hoặc ^ N ^ F ở 2400-7-O-1) sẽ tạo ra các chuyển đổi dòng chính xác giống như một ký tự "+" ở 1200 baud, vì vậy tôi sẽ coi "+" là một lựa chọn kỳ lạ cho một nhân vật đào tạo baud.
supercat

Tham khảo Wikipedia (!) Chỉ dành cho những người không biết về +++. Phần cứng tôi sử dụng các chuyến tàu trên 'U', phần mềm đào tạo trên các chuỗi tùy chỉnh. Bạn có biết về một tiêu chuẩn? Tất cả các chuỗi kết nối được sử dụng để bắt đầu +++, do đó, tính năng tự động hoàn thành trước bất kỳ giao tiếp nào khác.
David

22

Nó đề cập đến tập lệnh Hayes đã là tiêu chuẩn trong một thời gian dài để ban hành các lệnh cho modem (và các thiết bị khác) trên một dòng nối tiếp.

Thay vì các lệnh và dữ liệu có hai dòng riêng biệt, chỉ có một dòng được sử dụng và để chuyển sang chế độ lệnh từ dữ liệu, một chuỗi nhất định được gửi, ví dụ +++ theo sau là tạm dừng độ dài đã đặt. Sau đó, dữ liệu tiếp theo được xem như một lệnh của thiết bị nhận.
Lý do để sử dụng một cái gì đó như thế này là vì nó tránh được sự cần thiết của một cặp dòng khác, trong nhiều trường hợp đơn giản là không có sẵn, đặc biệt là trong các hệ thống nhúng nhỏ.

Hãy xem trang Wiki và các liên kết ở phía dưới - có rất nhiều chi tiết ở đó.

Mặc dù vậy, có tất cả các loại tiện ích mở rộng cho bộ AT gốc, vì vậy tôi sẽ không ngân hàng cho tất cả mọi thứ đề cập đến AT để thực sự sử dụng tất cả các lệnh Hayes ban đầu. Ví dụ: tôi có một chip nối tiếp bluetooth ở đây mà IIRC sử dụng loại AT riêng của nó.
Mặc dù vậy, tôi không phải là chuyên gia về vấn đề này, tôi chỉ nhớ việc hack xung quanh bằng các lệnh trong những ngày bạn quay số và BBS.


13

Tập lệnh "AT" là để giải quyết vấn đề cần thoát khỏi thông tin điều khiển băng thông trên cùng một dữ liệu tùy ý kênh luồng byte được gửi. Đây là một vấn đề phổ biến của modem, trở lại khi chúng là các hộp bên ngoài được kết nối với máy tính thông qua cáp nối tiếp.

Hayes là một nhà sản xuất các modem như vậy, và đã được rất nhiều người biết đến sớm. Giải pháp của họ cho vấn đề ngoài băng tần là gửi cho modem hầu hết hai lệnh điều khiển ASCII với một chuỗi đặc biệt để đặt nó ở chế độ truyền dữ liệu. Để giảm khả năng các công cụ ngẫu nhiên trông giống như các lệnh, tất cả các chuỗi lệnh của chúng bắt đầu bằng lệnh AT, viết tắt của "chú ý".

Hayes đã giành được rất nhiều thị phần mà các nhà sản xuất modem khác phải thực hiện cùng một bộ lệnh để tương thích. Bằng cách đó, khách hàng có thể sử dụng modem của mình mà không phải viết lại phần mềm đã được thiết lập để lái modem Hayes.

Ngày nay, sơ đồ này hiếm khi được sử dụng nhưng tất nhiên một cái gì đó rất phổ biến xung quanh trong các góc tối ngay cả ngày nay.


1
Tôi thích ghi chú lịch sử này về Hayes và cách nó buộc nó phải có tiêu chuẩn, kết hợp câu trả lời của bạn với hai câu trả lời trên là quá đủ :)
xsari3x

Ngẫu nhiên, nhiều modem mới hơn dường như không còn yêu cầu các ký tự "AT" là chữ hoa, điều này làm tăng tần suất ngắt kết nối ở giữa việc gửi tệp văn bản sẽ gây ra hành vi modem bị xóa.
supercat

Mã kiểm soát Band-Break là +++ AT hoặc +++ <thời gian bảo vệ>. AT là hai ký tự đầu tiên của bộ điều khiển tiêu chuẩn và là viết tắt của ATtention.
David


0

Tại sao mọi người trong các hệ thống nhúng sử dụng lệnh AT?

Tôi không phải là một trong những "người trong các hệ thống nhúng" nhưng tôi nói rằng ATcác lệnh vẫn được sử dụng vì chúng đến từ một tiêu chuẩn chi phí thấp được xác định rõ để truyền tín hiệu nội tuyến.

Điều đó có nghĩa là bạn có thể sử dụng cùng một kênh liên lạc để báo hiệu (lệnh AT để quản lý giao tiếp) và dữ liệu (dữ liệu thực tế bạn muốn gửi). Các ATquy định cụ thể tiêu chuẩn như thế nào để phân biệt giữa hai để bạn và thiết bị nối tiếp của bạn không bị nhầm lẫn khi nói chuyện với nhau.

"AT" có nghĩa là gì?

ATlà dành cho sự chú ý

Tại sao mọi người cứ nói đó là một tiêu chuẩn?

Vâng, bởi vì nó là. Tôi muốn nói nó thực sự là một kết hợp của tiêu chuẩn de-factomột cặp vợ chồng của "thật" chuẩn mực và một số khuyến nghị .


Điều này dường như không nói gì mà chưa được nói trong các câu trả lời khác từ nhiều năm trước. Nếu bạn định nạo vét một câu hỏi cũ, thì thực sự nên nói điều gì đó quan trọng chưa được nói trước đây.
Chris Stratton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.