Problema y condiciones previas
Un bucle puede entregar imágenes correctas y aun perder búferes o reutilizar imágenes antiguas. Confirme vida útil y eventos en el SDK real. El anexo es pseudocódigo neutral, no llamadas ejecutables ni una función acreditada deDeyi.
Preparación de la prueba
Suponga 2000 × 1500 Mono8: 3 MB por imagen y 24 MB para 8 búferes, sin copias ni metadatos. Fije identidad del dispositivo y una generación nueva tras reconectar.
Lea adquisición y duración del SDK antes del bucle. Defina asignación, propietario, retorno al driver y validez de referencias retenidas. Revise notificación de retirada y su hilo. Coordine cierre fuera del callback si prohíbe bloqueo. Use identidad estable documentada, no primer dispositivo enumerado. Guarde tamaño, formato, payload, disparo y transporte como conjunto aprobado. Las operaciones conceptuales no prometen API Deyi.
Procedimiento
- Configure tamaño y formato antes de asignar búferes según datos informados por el SDK.
- Use espera limitada; distinga falta de disparo, transferencia fallida y retirada.
- Copie o retenga la imagen según propiedad documentada antes de liberar el resultado.
- Ante retirada, detenga trabajadores, devuelva búferes y descarte resultados antiguos.
- Reconecte solo el dispositivo esperado, verifique configuración y arranque otra generación.
VENDOR-NEUTRAL PSEUDOCODE — conceptual operations, not SDK API names
connect(expected_device_identity)
verify_configuration_and_payload()
generation = new_generation()
while connected:
result = none
owned_image = none
try:
result = acquire_with_deadline()
if result.is_valid:
owned_image = copy_or_retain_under_documented_rules(result)
process(owned_image, generation)
else:
record_acquisition_fault(result, generation)
finally:
release_owned_image_if_present(owned_image)
release_grab_result_if_present(result)
on_coordinator_receives_device_removed:
invalidate_current_generation()
stop_and_join_workers()
return_all_buffers()
discard_old_generation_results()
reconnect_expected_device_and_verify_configuration()
generation = new_generation()Adquiera con plazo finito y valide antes de acceder. Tiempo agotado sin disparo difiere de transferencia o retirada. Asocie generación y frame/evento antes de procesar. Copie o retenga conforme al SDK. Libere también ante excepciones. Limite cola y defina saturación. Memoria creciente no es contrapresión; reutilizar la última imagen no sustituye una ausente.
Registro de prueba ilustrativo
Supuestos ilustrativos, no resultados medidos por Deyi. Sustituya los valores por sus propios registros de prueba aprobados.
| Campo del registro | Valor supuesto |
|---|---|
| Capacidad de la cola | 8 |
| Datos de imagen sin comprimir | 3 MB |
| Capacidad de almacenamiento | 24 MB |
| Número de muestras | 1000 |
Fuerce un consumidor lento manteniendo la frecuencia configurada. Registre generación, identificador de imagen, profundidad de cola, búferes activos y motivo del tiempo agotado. Los 24 MB excluyen las copias; las referencias retenidas requieren una duración permitida por el SDK. El bloque finally ilustra la liberación incluso ante excepciones de procesamiento. Después de reconectar, introduzca un resultado tardío de la generación anterior y confirme que no se publica como inspección actual.
Tras retirada, impida trabajo nuevo y termine trabajadores antes de liberar recursos usados. Complete o cancele según contrato, devuelva búferes y descarte antiguos. Reconecte identidad prevista y verifique ajustes, no defaults. Lea payload antes de asignar y cree generación al estar listo. Descarte callbacks y resultados antiguos por generación aunque coincida numeración. Presupuesto incluye copias, colas y espacio de algoritmo.
Dos vistas del proceso
Adquisición estable: búferes, tiempos de espera y reconexión — 1
La adquisición cede propiedad al procesamiento y la recupera tras terminar el acceso.
- Adquirir
- Retener o copiar
- Procesar
- Liberar
Adquisición estable: búferes, tiempos de espera y reconexión — 2
Espera vencida, retirada y cierre requieren transiciones distintas.
- Espera vencida
- Retirada
- Cierre
Diagnóstico de fallos
- Memoria creciente sugiere resultados sin liberar o cola ilimitada.
- Imágenes corruptas sugieren acceso después de devolver el búfer.
- Imágenes antiguas tras reconectar exigen revisar colas y generaciones.
Aceptación y entrega
Pruebe 1000 imágenes supuestas, retirada, restauración, cierre y consumidor lento. Confirme memoria limitada, generaciones separadas y fallos explícitos. 24 MB no es presupuesto total.
Defina los límites de aceptación antes del ensayo y conserve las evidencias originales. Los ejemplos no acreditan las prestaciones de un modelo suministrado.
Acepte adquisición sostenida, interrupciones y consumidor lento. Registre búferes, cola, memoria, generaciones y motivos. Retire/restaure controladamente y cierre con adquisición pendiente. Confirme cierre, ausencia de uso tras liberar y de imágenes antiguas nuevas. Pruebe excepción para finally y compare identidad/configuración antes de liberar producción. Mil frames cubren función, no fuga prolongada. Entregue versión, propiedad, cola, reconexión y evidencias; revise código ejecutable con documentación propia.
Fuentes y referencias técnicas
Las referencias explican los métodos y límites del tutorial. Las comprobaciones de ejemplo sirven de orientación; la aceptación en producción requiere pruebas con sus propias muestras.
- Programming with pylon CBaslerComprobado
- pylon .NET SamplesBaslerComprobado
Referencias de componentes y selección
- Cámara inteligente frente a sistema de visión basado en PC
- Cámara industrial GigE frente a USB3
- sistemas de vision artificial
- machine vision software · Referencia en inglés
- EAN-13: aceptación en línea
- EAN-13: decodificación y reglas de datos
- Aceptar e integrar una inspección de nivel visible
- Flujo asistido por IA para un indicador de nivel visible
- Relacionar registros de inspección, imágenes e identificadores
- Etiquetas OCR: aceptación y contrato PLC
- Etiquetas OCR: flujo nativo y coincidencia exacta
- Aceptar e integrar integridad de paquetes abiertos
- Crear integridad de paquetes abiertos asistida por IA
- Definir el enlace PLC–visión mediante estados explícitos
- Aspecto de sello y cordón: aceptación en línea
- Aspecto de sello y cordón: reglas
- Clasificación SKU: aceptación y desconocidos
- Clasificación SKU: reglas de color y producto
- Defectos superficiales: aceptación y salida
- Defectos superficiales: evaluación AI acotada
- Ensayar latencia desde el disparo hasta la decisión PLC
- Versionar y restaurar el conjunto completo de visión

