2014-02-25 113 views
0

我無法打開串口在linux下啓動通訊ubuntu。我試過這個:串口在linux下不會打開ubuntu

int OpenPort(void) { 

int fd; 

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); 

if(fd == -1) 
{ 
    printf("Failed to open port.\n"); 
} 
else 
{ 
    fcntl(fd, F_SETFL, 0); 
    printf("Opened!\n"); 
} 

return(fd); 
} 

int main() 
{ 
    int x = OpenPort(); 
    printf("%i\n", x); 

    exit(0); 
} 

我是新來的linux,發現這個代碼在線,但它不適用於我。

+0

什麼是錯誤?嘗試將'printf(「打開端口失敗\ n」)'替換爲'printf(「打開端口失敗:%s。\ n」,strerror(errno))或'perror(「打開端口失敗。 「)'。 – loentar

+1

當系統調用失敗時,您應該打印包含錯誤代碼的['errno'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/errno.html)的值。您可以使用['strerror'](http://pubs.opengroup.org/onlinepubs/009695399/functions/strerror.html)函數獲得一個漂亮的可打印字符串。您也可以使用['perror'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/perror.html)函數直接打印消息。 –

+0

錯誤是權限被拒絕 – user2081328

回答

1

你需要以超級用戶/超級用戶身份運行才能訪問linux中的串口。嘗試運行您的二進制文件爲sudo。如果您可以驗證這是問題,但您不希望您的進程由root用戶運行,那麼您可以在代碼中使用這些選項來獲取root權限。這個答案可能有用How to programmatically gain root privileges?

+0

它適用於sudo,但如何在沒有它的情況下運行它?如何獲得權限?我以管理員身份運行Ubuntu。 – user2081328

+0

@ user2081328查看我在編輯中鏈接到的答案。 – mathematician1975

+0

@ user2081328順便說一下,我注意到你在這裏提出了13個問題,但沒有接受任何答案。如果你發現一個答案解決了你的問題,你可以接受它。這有助於將來看到你的問題的人看到哪個是最好的解決方案。 – mathematician1975