2013-10-24 14 views
5

Tôi đang cố gắng tự động truy xuất dữ liệu từ một cổng COM bằng cách sử dụng một tập tin thực thi.Truy xuất dữ liệu từ cổng COM bằng cách sử dụng một tập tin thực thi

Tôi có thể định cấu hình cổng com và gửi lệnh ở cổng khác để yêu cầu thiết bị của tôi cung cấp thông tin.

Vấn đề là tôi không thể chụp được dữ liệu mà thiết bị gửi. Tôi đã thử với RealTerm và thiết bị đang làm việc và gửi các thông tin trở lại pc, nhưng tôi thực sự cần các tập tin batch để làm điều đó tự động, đây là mã:

echo off 

MODE COMxx ... 

COPY retrievecommand.txt \\\\.\COMxx: 

COPY \\\\.\COMxx: data.txt 

Bất kỳ lời đề nghị?

+0

Sử dụng 'loại COMxx' –

+2

có thể trùng lặp của [Làm thế nào để đọc dữ liệu từ cổng COM bằng cách sử dụng tập tin thực thi?] (Http://stackoverflow.com/questions/3923894/how-to-read-data-from-com- port-using-batch-file) – peet

Trả lời

0

Khi đọc, lệnh COPY sẽ tiếp tục cho đến khi phát hiện phần cuối của tệp. Vì nguồn là một thiết bị (với một luồng vô hạn tiềm tàng), nó chỉ biết dừng khi phát hiện điểm kết thúc của điểm đánh dấu tập tin. Đây là ký tự Ctrl-Z (0x1A).

Đề xuất trong câu hỏi trùng lặp về việc sử dụng lệnh TYPE để đọc có thể dẫn đến cùng một vấn đề.

Không có cơ chế chuẩn để đọc một dòng. Nếu bạn có thể chuyển ứng dụng của mình sang PowerShell, bạn sẽ có thể đọc các dòng đơn với kết quả mà bạn mong đợi.

1

Sử dụng lệnh TYPE trong vòng lặp đệ quy bằng lệnh DOS GOTO tới DOS LABEL. Sử dụng 'phụ thêm đầu ra' để nắm bắt văn bản như TYPE COM1: >> Data.txt Đôi> có nghĩa là liên tục nối (hoặc nối thêm) vào Data.txt. Một đơn hoặc 'đầu ra chuyển hướng' sẽ thay thế văn bản trong Data.txt mỗi vòng lặp (nếu dữ liệu com có ​​trên cổng). Thêm dòng thứ 2 chuyển hướng đến màn hình điều khiển để bạn có thể xem hoạt động (ví dụ: TYPE COM1:> CON [CON có nghĩa là giao diện điều khiển hoặc màn hình điều khiển nhưng bạn có thể bỏ qua giao diện đó mặc định anyway])

Control-Z is không cần thiết bởi lệnh TYPE. Nó sẽ chỉ kết xuất văn bản liên tục cho đến khi toán tử thực hiện điều khiển-C và sau đó là Y để phá vỡ vòng lặp. Bạn thực sự không cần phải dừng vòng lặp trừ khi bạn đang thực hiện với các tập tin thực thi tất cả cùng nhau. Tệp Data.txt sẽ có sẵn cho các chương trình khác trực tiếp và sẽ không hiển thị 'Vi phạm Chia sẻ' nếu bạn cố gắng truy cập nó bằng một chương trình khác như NOTEPAD.EXE trong khi tệp lô này vẫn đang lặp.

Ngoài ra nếu bạn tạo dòng thứ 3 trong tệp lô có nội dung TYPE COM1:> Data1.txt [chỉ thông báo một chuyển hướng], bạn sẽ có một dòng văn bản tức thì sẽ biến mất với lần lặp tiếp theo. Nhưng đôi khi điều đó hữu ích nếu bạn chỉ cần một dòng dữ liệu. Có những cách sáng tạo để trích xuất một dòng dữ liệu sang một tệp văn bản khác bằng cách sử dụng lệnh DOS FIND.

Các vấn đề liên quan