請問如何用vxworks實作串口與伺服(或者串口鏈接另外一臺電腦在另外一臺電腦上安裝串口助手顯示信號量)的程式,就是程式通過workbench撰寫,然后燒到開發板中,然后通過422傳給另外一臺電腦(另外一臺電腦安裝串口助手并顯示資料)
uj5u.com熱心網友回復:
只要是VxWorks支持串口驅動,直接創建串口發送任務就行啊uj5u.com熱心網友回復:
BSP 串口驅動沒問題, 就用一個TASK1 做同步發送,其他的TASK 要寫日志 ,就直接發送到TASK1 就行,同步可以用semorphone 保證發送的時序uj5u.com熱心網友回復:
,兩個串口是不是要加個判斷啊while(1){
FD_ZERO(&readFds);
FD_SET(g_serialFd, &readFds);
FD_SET(g_serialFd1,&readFds);
width=(g_serialFd>g_serialFd1?g_serialFd:g_serialFd1)+1;
if(ERROR == select(width, &readFds, NULL, NULL, NULL))//(要從0檢查的位數**讀取fds**寫入fds**例外fds**等待的最大時間,空=永遠)
{
continue;
}
if(FD_ISSET(g_serialFd, &readFds))
{
count=read(g_serialFd, (char *)&控制字, 16);
printf("列印串口1收的");
}
if(FD_ISSET(g_serialFd1, &readFds))
{
count=read(g_serialFd1, (char *)&控制字, 16);
printf("列印串口二收的");
}
但是現在串口二收的有錯誤
uj5u.com熱心網友回復:
,兩個串口是不是要加個判斷啊while(1){
FD_ZERO(&readFds);
FD_SET(g_serialFd, &readFds);
FD_SET(g_serialFd1,&readFds);
width=(g_serialFd>g_serialFd1?g_serialFd:g_serialFd1)+1;
if(ERROR == select(width, &readFds, NULL, NULL, NULL))//(要從0檢查的位數**讀取fds**寫入fds**例外fds**等待的最大時間,空=永遠)
{
continue;
}
if(FD_ISSET(g_serialFd, &readFds))
{
count=read(g_serialFd, (char *)&控制字, 16);
printf("列印串口1收的");
}
if(FD_ISSET(g_serialFd1, &readFds))
{
count=read(g_serialFd1, (char *)&控制字, 16);
printf("列印串口二收的");
}
但是現在串口二收的有錯誤
uj5u.com熱心網友回復:
為啥要用POSIX API 呀,我給你的方式,VxWorks 只寫的方式,也就是輸入日志的方式,在LINUX 中就相當于 READ-WRITE LOCK 。如果你要讀,那么就另外加一個TASK_READ , 然后從中斷中 發送訊息到TASK_READ就可以了。
uj5u.com熱心網友回復:
兩路串口接收獨立的,可以創建兩個接收任務。初始化配置串口只在系統啟動時完成配置,不要放在任務里。你的兩路串口執行的任務不同,不要放在一個任務里,設計時考慮去耦合對你以后維護非常有幫助。
uj5u.com熱心網友回復:
哦哦好的,謝謝轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/83289.html
標籤:VxWorks開發
上一篇:胡思亂想
