跳至內容

Runtime 5.9.0 已知問題#

本節提供有關 Basler Runtime 5.9.0 版已知問題的資訊。

所有元件#

總結 相機未傳送正確的影像
描述 若多鏈結相機不符合 CXP 標準中關於在鏈結之間分配影像資料的規範,將無法向電腦傳送正確的影像。此問題在使用 JAI SP-12000C-CXP4 相機時曾被觀察到。
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID TFS 211645
總結 相機模擬器的非預期行為
描述 使用 Applet 的內部相機模擬器時,其顯示的頻寬可能會比預期低。這表示當使用目前的模擬器時,可能會發生某些溢位狀況。當使用實際相機時,不會出現此行為。此問題僅與內部相機模擬器有關。
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID –
總結 擷取卡無法與 Windows Fast Startup 搭配運作
描述 在啟用了 Fast Startup(也稱為 Hybrid Boot 或 Hybrid Shutdown)的 Windows 8 或更高版本下,變更硬體設定並重新啟動系統後,擷取卡可能無法繼續運作。
受影響的作業系統 Windows 8 或更高版本
因應措施 重新啟動(明確的重新啟動,而非關機)可以解決這些問題。若要完全避免這些問題,請按照 www.windowscentral.com 的說明停用 Fast Startup。
票單 ID –
總結 以高影格率顯示影像可能會導致對使用者輸入的回應變慢
描述 當使用 Framegrabber API 程式庫 display_lib(僅適用於 Windows)時,以高影格率(約每秒 10,000 個影格)顯示影像可能會導致主電腦對使用者輸入(例如鍵盤和滑鼠)的回應變慢。
受影響的作業系統 Windows
因應措施 沒有可用的因應措施。
票單 ID –
總結 Linux 驅動程式無法使用受信任的 Basler 憑證進行簽署
描述 在 Linux 中使用安全開機 (UEFI 模式) 需要使用以受信任憑證簽署的驅動程式。由於驅動程式是以原始程式碼的形式提供,因此無法使用受信任的 Basler 憑證進行簽署。
受影響的作業系統 Linux
因應措施 若要使用該驅動程式,可以停用安全開機。或者,您可以依照此 Ubuntu 部落格文章中的說明來簽署驅動程式。
票單 ID –

採集卡#

總結 LED 12EXT 在錯誤的事件發生時亮起紅燈
描述 當 imaWorx 未連接至外部電源供應器時,LED 12EXT 理應亮起紅燈。然而,只有在連接外部電源連接器時,LED 才會亮起紅燈,且其錯誤地反映了 12V_DC_UP 的狀態,而非 12V_EXT。
因應措施 沒有可用的因應措施。
票單 ID TFS 206709

韌體#

總結 由 CXP-12 Interface Card 1C 卡的 PCIe 通訊模組導致的資料遺失與系統凍結
描述 由於韌體版本為 3.0 S1.1 P1 的 CXP-12 Interface Card 1C 卡(以及對應的 Applet)其 PCIe 通訊模組存在問題,根據電腦 PCI 硬體的敏感度,資料傳輸可能會失敗並導致系統凍結。這種情況可能發生於:
  • 緩衝區的記憶體位址起始於 PCI 酬載大小界線後方 4 個位元組處,或終止於其前方 4 個位元組處。
  • 相機產生的影格,其位元組大小是 4 的倍數,但不是 8 的倍數。
受影響的作業系統 Windows 與 Linux
受影響的硬體 韌體版本為 3.0 S1.1 P1 的 CXP-12 Interface Card 1C 卡
因應措施 在 8 的倍數之記憶體位址建立緩衝區。如果所需的緩衝區大小不是 8 的倍數,請分配額外的位元組以符合此要求,並在處理資料時忽略此填充。a
票單 ID TFS 184670
總結 變更於 DeviceUserID 需要重新啟動 GenTL Producer 或其他應用程式
描述 當 DeviceUserID (準確地說是相機的 CXP 啟動載體暫存器 DeviceUserID) 變更時,需要重新啟動 GenTL Producer 才能透過 GenTL API 反映該變更。當使用 GUI 透過 GenTL 與相機互動時(即 pylon Viewer),需要重新啟動該應用程式才能使變更生效。
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID TFS 207518

CXP-12 Interface Card 1C Applet#

總結 頻繁變更鏈結速度導致錯誤
描述 當頻繁變更某個連接埠上的 CXP 鏈結速度時,可能會發生速度變更失效的情況。在此情況下,系統會記錄錯誤訊息「Failed to set bitrate of uplink transceivers」與「Failed to set bitrate of downlink transceivers」。
由於相機偵測會探測未連線的連接埠並因此變更其鏈結速度,因此當應用程式頻繁嘗試在未連線的連接埠上偵測新相機時,可能會發生此問題。
受影響的作業系統 Windows 與 Linux
因應措施 重新載入 Applet:
您可以透過載入不同的 Applet,然後再次載入原本的 Applet 來重新載入 Applet。如果名為 SISO_FORCE_RELOAD_APPLET 的環境變數 yes已定義且其值為 ,則無需先載入不同的 Applet 也可以進行重新載入。
票單 ID TFS 197127

SDK#

總結 由於從相機到擷取卡的影像傳輸緩慢而導致畫面損毀
描述 如果(重新)將緩衝區排入佇列的速度比從相機傳輸影像至擷取卡的速度慢,則會傳送損毀的影像。此行為只能透過檢查影像資料來偵測。
受影響的作業系統 Windows 與 Linux
因應措施 為了避免這些損壞的影像,影像處理和緩衝區重新排隊的速度必須大於相機的幀率。擷取卡上的內部緩衝區足以平衡排程等原因造成的較小延遲。
由於此問題而產生的破損幀小於所設定的尺寸,因此未預期地較小的幀可以用作此問題的指標。您可以使用以下方式決定幀資料的大小:
  • 使用 GenTL Producer:
    呼叫 DSGetBufferInfo 並使用 BUFFER_INFO_SIZE_FILLED 作為指令。
    請勿 NOT 使用 BUFFER_INFO_IS_INCOMPLETE 且不要檢查 BUFFER_INFO_SIZE_FILLED < BUFFER_INFO_DATA_SIZE。這些檢查將一律為 false。如需詳細資訊,請參閱 GenTL Producer.
  • Using the frame grabber SDK / fglib:
    呼叫 Fg_getParameterEx 並使用 FG_TRANSFER_LEN 作為參數。
票單 ID TFS 207873

Cognex Adapter#

總結 Cognex VisionPro Must Be Started with Admin User Rights
描述 Cognex VisionPro must be started with Admin user rights to access the frame grabber.
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID TFS 187245
總結 Limited Memory Leads to Failed Acquisition for Large Images
描述 When setting up a large ROI (i.e 4096 x 3000), starting the acquisition may fail with the message "The acquisition failed abnormally. (Adapter image pool full.)"
This happens, because VisionPro limits the memory that can be used by the vendor-specific adapters.
受影響的作業系統 Windows
因應措施 To avoid this, increase the limit via the Windows Registry as described in the Cognex VisionPro Adapter Manual
票單 ID TFS 203605

GenTL Producer#

總結 Camera Parameters Changed after Image Acquisition Start Are Not Reflected In the Frame Grabber
描述 當在影像擷取期間變更相機參數時,該變更不會反映在 frame grabber 中。這是因為 GenTL Producer 會在開始擷取之前查詢相關參數(寬度、高度、影像格式等),並將這些參數與 frame grabber 進行同步。
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID TFS 195482
總結 BUFFER_INFO_DATA_SIZE Contains Number of Transferred Bytes Instead of Frame Size
描述 緩衝區 Property BUFFER_INFO_DATA_SIZE 未如預期運作: BUFFER_INFO_DATA_SIZE 應該包含所設定的影格大小。然而,它包含實際傳輸的位元組數,如同 BUFFER_INFO_SIZE_FILLED一樣。因此,Property BUFFER_INFO_IS_INCOMPLETE 將一律為 false.
受影響的作業系統 Windows 與 Linux
因應措施 的預期值 BUFFER_INFO_DATA_SIZE 的預期值通常等於影像的 width * height * pixel size.
票單 ID TFS 211972
總結 The GenTL Device ID Changes When the Applet Is Changed
描述 根據 GenTL 標準,device ID 在兩次工作階段之間應保持不變。然而,當變更 applet 時,GenTL device ID 會改變。因此,透過某個 applet 查詢到的 device ID,只有在 applet 與產生 device ID 的原始 applet 名稱相同時,才能搭配不同的硬板和不同的 applet 使用。
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID –
總結 BUFFER_INFO_FRAME_ID Contains a Counter for All Frames Instead of the Source Tag from the CXP Image Header
描述 GenTL BUFFER_INFO_FRAME_ID,可以透過以下方式查詢 DSGetBufferInfo,不包含來自 CXP 影像標頭的來源標籤。相反地,它包含傳送至電腦的所有影格的 Counter。
受影響的作業系統 Windows 與 Linux
因應措施 沒有可用的因應措施。
票單 ID TFS 197430

microDisplay X#

總結 設定 TriggerState 設定為 active May Cause the Acquisition to Time Out
描述 設定 applet 參數 TriggerState 設定為 active 在相機上開始 Acquisition Start 之前,可能會導致 Acquisition Start 逾時,且不會傳送任何影像。
受影響的作業系統 Windows 與 Linux
因應措施 為避免這種情況,請確保 TriggerState 僅在開始 Acquisition Start 後才啟用。
票單 ID TFS 191631
總結 在 Linux 上,microDisplay X 關閉時可能會發生當機
描述 在 Linux 上,microDisplay X 在關閉時可能會發生當機。這不會造成其他後續影響,可以忽略。
受影響的作業系統 Linux
因應措施 沒有可用的因應措施。
票單 ID TFS 211811

  1. 您可以使用以下程式碼範例來建立沒有此資料傳輸問題的緩衝區:

    // create a ROI that could trigger the issue (for demonstration purposes only!)
    
        size_t imageWidthPx = 252;
    
        size_t imageHeightPx = 15;
    
        size_t pixelSizeBytes = 1;
    
    // compute the required buffer size for one image
    
    size_t imageSizeBytes = imageWidthPx * imageHeightPx * pixelSizeBytes;
    
    // set the buffer size to the nearest larger size that is divisible by 8
    
    size_t bufferSizeBytes = ((imageSizeBytes + 7) / 8) * 8;
    
    // add 4 more bytes so we can add an offset of 4 bytes if the address ends up being only 4 byte aligned
    
    bufferSizeBytes += 4;
    
    // allocate the buffer
    
    uint8_t* imageBuffer = (uint8_t*)malloc(bufferSizeBytes);
    
    // sanitize the address
    
    uint8_t* sanitizedImageBuffer = (((uintptr_t)(imageBuffer)) % 8 == 0)
    
        ? imageBuffer
    
        : imageBuffer + 4;
    
     /* [use the sanitized buffer] */
    
    // free the original(!) buffer
    
    free(imageBuffer);
    

     ↩