緩衝區擷取不完整:錯誤 3774873620 GX 狀態 0xe1000014#
這個錯誤相當常見,但通常可以迅速修正。要修正此錯誤,請依照以下步驟操作:
- 將封包大小調整為 1500。
- 請逐步增加該數值,直到出現所述的錯誤為止。
- 將數值調低至一個穩定值。
這不會影響幀率,但能提升資料傳輸的穩定性與效率。
相機上的「封包大小」與網卡上的「幀」或「MTU」是同義詞。巨幀(Jumbo Frames)是指大於 1500 位元的封包。從歷史上來看,
- 10BaseT 以太網每封封包最多支援 576 位元組,
- 100BaseT 支援每封封包 1500 位元組,且
- 理論上,千兆乙太網路每封封包最多可支援 16000 位元組。
其好處在於,當封包較大時,CPU 需要解包的封包數量較少,因此 CPU 負載也較低。
但一個常見的問題是,不同的網路介面卡(NIC)和交換器支援的封包大小各不相同,且傳輸品質往往也有所差異。因此,找出最理想的封包大小取決於系統本身。
- 如果封包大小過小,則交換機或網路介面卡(NIC)內建的緩衝區可能會被淹沒,導致封包遭丟棄。
- 如果封包大小過大,交換機或網路介面卡(NIC)可能無法支援,並會將該封包丟棄。
無論哪種情況,當封包被丟失時,Basler 的驅動程式會偵測到此狀況,並要求攝影機重新傳送該封包。但若問題嚴重,即使如此仍無法成功,該封包便會永久遺失。這將導致「緩衝區抓取不完整 - 3774873620 GX 狀態 0xe1000014」的錯誤。
通常而言,當處理天然包含大量資料的大型影像時,約 500 的封包大小會過小。而且我們發現,除了我們的相機之外,鮮少有裝置支援 16000 位元的封包。因此,從 1500 開始通常是個不錯的做法。若您發現 CPU 負載高於預期,可以適度提高此數值。
其他提示:
- 在pylon API 中,我們提供了一些函式,可用於檢查統計資料,例如丟失的封包數量、重新傳送的封包數量等。監控這些資料會非常實用。
- 您也可以啟用
AutoPacketSize相機中的參數,它將嘗試自行協商出一個可行的封包大小。