如何檢測USB設備插入和退出(類型的監聽)與Java?
不只是一個pendrive,它也可能是一臺掃描儀或打印機。用Java檢測USB設備插入和拔出(類型的偵聽)?不只是pendrives
我試過jUSB,但它沒用。
USB Java庫會更多,因爲我只需要使用它。
我需要在我的代碼中包含這些行,以便可以通知插入和插入的設備。
如何檢測USB設備插入和退出(類型的監聽)與Java?
不只是一個pendrive,它也可能是一臺掃描儀或打印機。用Java檢測USB設備插入和拔出(類型的偵聽)?不只是pendrives
我試過jUSB,但它沒用。
USB Java庫會更多,因爲我只需要使用它。
我需要在我的代碼中包含這些行,以便可以通知插入和插入的設備。
Java中的USB支持僅限於第三方庫。我沒有使用任何這些,但你可以嘗試JUSB
如果你不能通過USB庫找到一個解決方案,你總是可以做一些bodge作業,並通過所有可能的驅動器字母循環創建一個File對象爲每個人和測試,看看你是否可以從中讀取。如果插入USB存儲設備,先前失敗的驅動器盤符現在會通過,因此您會知道您有新設備。當然,你不知道它是什麼類型的設備(即它可能是CD/DVD)。但正如我所說,這不是一個理想的解決方案。
這裏有一個敲起來實用程序來證明這一點
import java.io.*;
/**
* Waits for USB devices to be plugged in/unplugged and outputs a message
*/
public class FindDrive
{
/**
* Application Entry Point
*/
public static void main(String[] args)
{
String[] letters = new String[]{ "A", "B", "C", "D", "E", "F", "G", "H", "I"};
File[] drives = new File[letters.length];
boolean[] isDrive = new boolean[letters.length];
// init the file objects and the initial drive state
for (int i = 0; i < letters.length; ++i)
{
drives[i] = new File(letters[i]+":/");
isDrive[i] = drives[i].canRead();
}
System.out.println("FindDrive: waiting for devices...");
// loop indefinitely
while(true)
{
// check each drive
for (int i = 0; i < letters.length; ++i)
{
boolean pluggedIn = drives[i].canRead();
// if the state has changed output a message
if (pluggedIn != isDrive[i])
{
if (pluggedIn)
System.out.println("Drive "+letters[i]+" has been plugged in");
else
System.out.println("Drive "+letters[i]+" has been unplugged");
isDrive[i] = pluggedIn;
}
}
// wait before looping
try { Thread.sleep(100); }
catch (InterruptedException e) { /* do nothing */ }
}
}
}
看看這也可以幫助你... https://javacircles.wordpress.com/2011/07/20/java-code-to-檢測-USB端口筆驅動器和顯示其內容/ –
嗨Vikas,非常感謝您的答覆。但我的情況是不檢測存儲設備。我需要編寫代碼來通知其他非存儲USB設備(如鼠標或打印機)的插頭活動。 –
您可能意味着#javapos(https://stackoverflow.com/tags/javapos/info),而不是#jpos(HTTPS的://計算器。 COM /標籤/初級專業人員/信息)。 jpos是一個不涉及POS硬件的服務器端iso8583框架。你可能想要更改你的標籤,這樣你就可以從合適的人獲得幫助 –