Question: PC Remote Control

Lê Khắc Tùng Sơn
(hypnohelmet)

New Member
Uhm, chào mọi người!

Tớ đang làm một cái project mà trong đấy có phần về control Nero trên một PC khác để burn DVD tự động.

Scenario: one click on this PC and everything is automated on the other PC.

Không hiểu mọi người có ai biết về PC remote control ko thì có thể chỉ cho tớ:

1 - Which communication protocol should be used? (COM, UDP,..??)
2 - Other things involved in this (services, mouse, API, Win32 etc.??? I have no idea)

^^ Thanks a lot!
 
1 - Which communication protocol should be used? (COM, UDP,..??)
COM dùng thế qué nèo được bác. UDP hay TCP rì thì tùy mục đích, dùng UDP nếu ko cần persistent connection, dùng TCP nếu ngược lại.
2 - Other things involved in this (services, mouse, API, Win32 etc.??? I have no idea)
Cần 1 services chạy trên remote computer. Sau đó dùng hàm API CreateProcess để mở chương trình NeroCmd đi kèm theo Nero với các thông số tương ứng. Còn cách sử dụng NeroCmd thế nèo thì NeroCmd /? là được.
 
có cái girder đấy :
www.girder.nl

tuy nhiên cái này đã bị mua lại ===> hết free
anh nói muộn quá :D
tuy nhiên em còn giử đủ plugins và các version free lẫn commercal của nó B-) : 3.0 free, 3.02b là commercial

hồi trước trên pcworld có hướng dẫn làm IR-receiver qua cổng COM B-).
Vụ này hôi trước em có tìm hiểu.
Nguyên lý hoạt động : tín hiệu từ điều khiền từ xa vào Ir-receiver. Chạy Girder nhận tín hiệu. Girder nhận tín hiệu sẽ thực hiện chương trình. Mỗi nút trên dktx sẽ có 1 code riêng, trong Girder gán cho mỗi code 1 câu lệnh, khi Girder nhận được code thì thực hiện lệnh tương ứng.
Tuy nhiên Girder chỉ là chuonwg trình mẹ. Tác giả không thể viết hết cho nên có thêm các plugins : nhận tín hiệu của creative, nhận tín hiệu IRda, giúp dk màn hình, giúp dk chuột bàn phím.
Tuy nhiên nếu one click thì dùng cái khác thiếu gì, cứ gì phải Pc remote.
** lưu ý (lưu ý license to Hà Jollyjoker712 B-)) : trên hầu hết các máy tính desk và note hiện nay đều có giao tiếp hồng ngoại, nhưng đó là giao tiếp IrDA, giao tiếp chuyển dữ liệu, 1 dạng của hồng ngoại, nhưng không phải loại hồng ngoại mà Girder hỗ trợ. Muốn dùng nó phải có plugins. Tuy nhiên plugins này chỉ chạy với version cũ 3.0 của girder.

Hehe trong các soft tốt trên mạng thì thằng Girder này là free mà tốt. Tiếc là bị mua mất rồi, và lục lại documentation của nó để đọc thì cũng hết hơi lắm :(.
 
Tốt nhất là thế này anh Sơn ạ :D
Vì mình ko đủ trình để làm kiểu real-time screen như các phần mềm thương mại khác, nên giải pháp là anh chụp màn hình bên kia, gửi về máy remote. Bên remote anh hiện lên 1 cửa sổ vừa đủ fit cái độ phân giải màn hình bên kia (để tiện hơn khi bắt các sự kiện click chuột). Mỗi thao tác click chuột lên màn hình anh sẽ gửi thông tin sang bên kia, dùng cách hook hệ thống để bên kia tạo ra 1 cú click ngay tọa độ đó. Kể cả sự kiện mouse move cũng tương tự. Nếu được thì anh nên cho cái màn hình nó refresh (bên kia chụp lại rồi gửi về 1 lần nữa) để biết bên kia thay đổi thế nào. Còn bàn phím cũng đơn giản, anh capture các sự kiện keypress rồi gửi thông tin sang bên kia, dùng hàm sendkeys để nó tạo ra cú nhấn phím :D Các hàm phục vụ việc hook bàn phím, capture screen này đều được mô tả rõ trong bộ MSDN.

Anh nên dùng TCP hay hơn vì UDP là connectionless ko bảo đảm dữ liệu được truyền chính xác :D
 
Bác Hà đi khuyên vớ vẩn quá. :)) Bác muốn xem hậu quả của cách làm đó thì connect đến X server trên 1 máy Linux thông qua LAN thì khắc thấy. Có lúc, bandwidth vọt lên đến cả chục Mbps.
 
Anh Hà khuyên làm thế thì là theo kiểu điều khiển từ xa một máy tính khác. Còn nhu cầu ở đây là one-click cơ mà? Không rõ là one-click vật lý (cần thêm vi mạch) hay là one-click chuột?

Communication protocol: Phải là giao thức truyền thông tin qua mạng (chắc là có dây). Nếu ở mức thấp thì dùng TCP. Nếu không thì dùng mức cao hơn theo kiểu RPC, dùng DCOM hay cao hơn, hoặc CORBA... để gọi chương trình điều khiển trên máy khách.

Vấn đề là anh Sơn tính làm theo kiểu gì. Nếu như Long nói, dùng một bộ làm chức năng nhận tín hiệu hồng ngoại cũng được (cái này hồi trước đọc xong định làm thử mà không được). Nhưng để đạt mục đích vẫn phải điều khiển được thằng Nero.

Anh Sơn xem xét lại bài toán nhé:
- Điều khiển Nero tự động hoàn toàn, có các kịch bản (scenario) đặt ra không?
- Dữ liệu để burn lấy từ đâu? Chắc là chỉ giải quyết được burn disc2disc, hoặc burn từ image. Đĩa nguồn nằm ở đâu? Máy điều khiển hay máy chịu điều khiển?
- Mức độ tự động ra sao? Có cần kích hoạt tự động Nero không?
 
Tự động đến mức nèo thì cứ viết 1 file bat rùi dùng CreateProcess để tạo 1 process chạy file bat đó là xong hết. Nero được cái có NeroCmd hoạt động trên command line ---> dễ làm.
 
Bác Hà đi khuyên vớ vẩn quá. Bác muốn xem hậu quả của cách làm đó thì connect đến X server trên 1 máy Linux thông qua LAN thì khắc thấy. Có lúc, bandwidth vọt lên đến cả chục Mbps.
Phải nén thành JPG trước khi gửi chứ em :D Đỡ tốn hơn hẳn BMP :D

Anh Hà khuyên làm thế thì là theo kiểu điều khiển từ xa một máy tính khác. Còn nhu cầu ở đây là one-click cơ mà? Không rõ là one-click vật lý (cần thêm vi mạch) hay là one-click chuột?
Tại anh ko đọc kỹ. Nếu là one click on this comp & everything is automated on other thì dễ hơn điều khiển từ xa realtime nhiều. Như thế nó cũng chẳng khác gì 1 chương trình macro, chẳng qua là thêm cái ra lệnh từ xa thôi!
Ai chơi Gunbound mà đã từng bot rồi thì cũng phải biết đến cái Journal Macro (anh Sơn tìm thử trên google xem). Phần mềm này cho phép tạo các macro tự động hóa, nó sẽ điều khiển chuột & bàn phím làm theo những thứ tự sắp xếp sẵn khá là hay. Anh Sơn tìm down cái đấy về nghiên cứu giúp ích nhiều đấy anh ạ :D
 
Cái Journal Macro của anh Hà cũng khá hay. Dung lượng cũng nhỏ gọn. Chỉ mỗi tội là không free :D Hôm nào rỗi rãi lại tìm cr*** vậy.
 
Phải nén thành JPG trước khi gửi chứ em Đỡ tốn hơn hẳn BMP
Bác có biết để chạy smooth 1 chút thì trong 1 giây nó phải gửi bao nhiêu hình ko?? Có nén thành .tar.bz2 đi chăng nữa thì vẫn là ko khả thi, chứ chưa nói đến JPG.
 
He he chú ko thấy anh đang bảo là lúc nào click mới refresh 1 cái à, lại còn ghi "nếu được" còn j :|
 
Nói như bác thì nói làm rì?? Bi giờ bác di chuyệt trên màn hình, mà đến bao giờ bác click nó mới refresh thì bác còn ko bít con trỏ chuột ở đâu để mà click ấy chứ.
 
Nói như chú thì cũng khác gì, cái hình screen nó chụp sẵn rồi, cứ di chuột đến click đúng chỗ là được, trừ những chương trình thay đổi xoành xoạch như game ra thì những cái như nero chỉ cần khi click refresh một phát xem nó thay đổi thế nào là được.
 
cách làm như Hà nói cũng được, nhưng làm phần mềm vậy tốn nhiều công đoạn quá (kể cả viêc nén lại thành jpeg cũng tốn thời gian. Cái cách này có vẻ giống phần mềm Remote administrator nhỉ.
Bài này chắc không cần điều khiển từ xa mà chỉ là điều khiển từ 1 PC khác nhưng đúng là đọc xong lại nhớ lại bài hướng dẫn làm đktx cho PC ở trên PCW hồi xưa thật. bây giờ mấy cái điều khiển từ xa vẫn dùng cổng com để làm cổng cắm mắt nhận hồng ngoại cho đktx vì thực ra cũng chì cần đường truyền như vậy là oki rồi. khó của điều khiển từ xa là ở driver điều khiển chứ ở đậy chỉ là ấn 1 nút để máy tính khác chạy Nero chì làm như Hiếu là đơn giản nhất. Nếu để chạy phần mềm khác không cho điều khiển bằng command line thì dễ phải dùng cách như của Hà, nhưng tự động hóa cao hơn chút.
Chả thấy đồng chí Sơn tham gia câu nào cả, post xong cái topic là chạy biến.
 
Nói như chú thì cũng khác gì, cái hình screen nó chụp sẵn rồi, cứ di chuột đến click đúng chỗ là được, trừ những chương trình thay đổi xoành xoạch như game ra thì những cái như nero chỉ cần khi click refresh một phát xem nó thay đổi thế nào là được.
Bác cứ suy nghĩ đơn giản. :biggrin:
 
Anh thấy công ty Nhật nó hay dùng cái VNC này để remote control. http://www.realvnc.com/download.html
Cái VNC này cho phép điều khiển từ xa tất tật, linux, windows,... miễn là đầu nhận cài VNC server, đầu gửi tín hiệu cài VNC

Nếu em đang dùng Windows XP, 2003 Server trong LAN thì dùng chức năng có sẵn Remote Desktop Connection là hay nhất.
 
Em cũng thích dùng VNC. Nhưng mà ở đây câu hỏi là cách làm 1 chương trình kiểu như thế chứ có phải dùng chương trình có sẵn đâu??
 
Nhưng đọc kỹ lại thì ý anh Sơn nó lại giống 1 dạng chương trình macro có thêm khả năng remote hơn :-?
 
Cái chú Sơn làm là project, cho nên cần có đầy đủ thông tin về các kiểu remote control 1 prog ở 1 PC qua 1 PC khác.

Muốn thế, trước hết phải có 1 connection giữa 2 máy. Có nhiều kiểu connection khác nhau, qua cổng hồng ngoại, BlueTooth, nối 2 cổng COM với nhau, qua USB, hoặc nối mạng. Thậm chí chỉ cần 1 máy có nero nhưng gắn vào modem hoặc mobile phone, thay cho máy thứ 2 có thể dùng điện thoại, fax, ...

Về nguyên tắc, chỉ cần giữa 2 máy có 1 connection (tức là có communication) là có thể làm được remote control. Vì thế, bước thứ 2 là liệt kê các loại communication, chẳng hạn chỉ đưa signal 1 chiều qua modem/mobile phone, chỉ dùng làm data transfer, có communication 2 chiều, ...

Sau cùng phải tính đến các khả năng nhận và chuyển đổi thông tin thành việc chạy prog, ở đây là Nero. Kiểu gì thì cũng phải viết 1 prog, shell/cgi chạy NeroCmd hoặc viết bằng C/C++ dùng Nero SDK, nếu 0 bắt buộc dùng Nero thì còn nhiều cách khác nữa, tùy theo việc dùng hệ điều hành gì ( Linux, chú Hiếu nhỉ :) ) Chương trình này có thể là ActiveX, WebServices, Cron Job, ... hoặc nó làm 1 dạng driver án ngay ở cổng COM cũng được.

Scenario 1:
- Driver chắn cổng COM1 (modem/mobile)
- Gọi phone/fax.... vào số máy này (request)
- Driver tìm xem có đang chạy Nero hay 0, nếu đang chạy thì bỏ request, hoặc cho request vào 1 job list
- Driver cũng luôn kiểm tra job list, khi Nero ngưng thì nó chạy job mới

Scenario 2:
- PC1 dùng FPT hoặc cái data link communication (chẳng hạn giữa 2 cổng COM) nối vào PC2
- PC1 upload request sang incoming directory của PC2 (job list)
- PC2 chạy cron job kiểm tra job list, tương tự Scenario 1
- Tùy theo kết quả khi chạy Nero, PC2 viết vào error.log nằm trong incoming directory
- PC1 đọc error.log trước khi transfer request

Scenario 3:
- PC1 đọc web server của PC2
- PC2 làm 1 quả webserver với 1 web formular dùng để start Nero theo các parameter của web formular
- Thay cho web formular cũng có thể tiến lên làm Web Service cho nó "in".

Scenario4,5,...: như các chú đã nói, dùng VNC, RemoteDesktop, tự viết trình, dùng DCOM, ...

Cuối cùng là nhận xét ưu nhược điểm, tính khả thi và chọn phương án tối ưu.
 
Chỉnh sửa lần cuối:
Back
Bên trên