fgt-SDK icon indicating copy to clipboard operation
fgt-SDK copied to clipboard

PRM-FOEM blinking erratically , card not detected

Open JeremieBours opened this issue 9 months ago • 4 comments

Hello ,

For a client , we are integrating two cards in a machine :
INT-FOEM4 PRM-FOEM Switch board

The issue is : When using the software , the Switch board is detected The PRM-FOEM is not detected and blinking 5 times per seconds , any idea what could we do ?

The setup is similar to this : Image

Using Python SDK Ubuntu

We know that you are the software part of the team , but the Fluigent support team ask us to open an issue here,

Best regard , Keep up the good work , we like your SDK very much.

JeremieBours avatar Apr 03 '25 18:04 JeremieBours

Hello,

Could you use the log functionality to record what the instrument is communicating? Simply add a call to fgt_set_log_verbosity(5) at the start of your script (before any other calls to the Fluigent SDK) and run it. It should produce a .log file in the same folder you ran the script from. If you require confidentiality, you can send it to our support email, otherwise you can attach it to a comment here. The only potentially sensitive information the logs will contain is the instrument's serial number. If the log file is large, you can compress it to .zip, which should make it small enough to fit in a email attachment. Thanks in advance.

Best regards, Ygor

Ygor-Oliveira avatar Apr 04 '25 07:04 Ygor-Oliveira

Hello ,

I finally had the chance to test the boards ,

Test setup :

3 pressure board in the main controller , The baords are blinking 3 times red , then two of them turn the red led OFF, One of the board blink faster in red after that,
I tried to log into a file , but the SDK does not produce any , so I used the fgt_set_log_output_mode( output_to_stderr = 1 ) option instead

here is the code I used ( slightly modified from examples to add your log capability ):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Basic Get Instrument Info example

This example shows how to retrieve information about Fluigent 
instruments: type, controller, serial number, unique ID...
	
Requires at least one Fluigent pressure or sensor module

Copyright (c) Fluigent 2019.  All Rights Reserved.
"""

# Print function for Python 2 compatibility
from __future__ import print_function 

from Fluigent.SDK import  fgt_set_log_verbosity , fgt_get_next_log , fgt_set_log_output_mode

print( fgt_set_log_verbosity(5) )
fgt_set_log_output_mode(1, 1, 0)
print( fgt_get_next_log() )

from Fluigent.SDK import fgt_detect, fgt_init, fgt_close
from Fluigent.SDK import fgt_get_controllersInfo
from Fluigent.SDK import fgt_get_pressureChannelCount, fgt_get_pressureChannelsInfo
from Fluigent.SDK import fgt_get_sensorChannelCount, fgt_get_sensorChannelsInfo
from Fluigent.SDK import fgt_get_TtlChannelCount, fgt_get_TtlChannelsInfo
from Fluigent.SDK import fgt_get_valveChannelCount, fgt_get_valveChannelsInfo



# Detect all controllers
SNs, types = fgt_detect()
controllerCount = len(SNs)
print('Number of controllers detected: {}'.format(controllerCount))

# List all found controllers' serial number and type
for i, sn in enumerate(SNs):
    print('Detected instrument at index: {}, ControllerSN: {}, type: {}'\
          .format(i, sn, str(types[i])))

print('')

## Initialize specific instruments
# Initialize only specific instrument controllers here If you do not want
# a controller in the list or if you want a specific order (e.g. LineUP
# before MFCS instruments), rearrange parsed SN table
fgt_init(SNs)

## Get the number of channels of each type

# Get total number of initialized pressure channels
print('Total number of pressure channels: {}'.format(fgt_get_pressureChannelCount()))

# Get total number of initialized pressure channels
print('Total number of sensor channels: {}'.format(fgt_get_sensorChannelCount()))

# Get total number of initialized TTL channels
print('Total number of TTL channels: {}'.format(fgt_get_TtlChannelCount()))

# Get total number of initialized valve channels
print('Total number of valve channels: {}'.format(fgt_get_valveChannelCount()))

print('')
    
## Get detailed information about all controllers

controllerInfoArray = fgt_get_controllersInfo()
for i, controllerInfo in enumerate(controllerInfoArray):
    print('Controller info at index: {}'.format(i))
    print(controllerInfo)
    print('')

## Get detailed information about all pressure channels

pressureInfoArray = fgt_get_pressureChannelsInfo()
for i, pressureInfo in enumerate(pressureInfoArray):
    print('Pressure channel info at index: {}'.format(i))
    print(pressureInfo)
    print('')

## Get detailed information about all sensor channels

sensorInfoArray, sensorTypeArray = fgt_get_sensorChannelsInfo()
for i, sensorInfo in enumerate(sensorInfoArray):
    print('Sensor channel info at index: {}'.format(i))
    print(sensorInfo)
    print("Sensor type: {}".format(sensorTypeArray[i]))
    print('')

## Get detailed information about all TTL channels

ttlInfoArray = fgt_get_TtlChannelsInfo()
for i, ttlInfo in enumerate(ttlInfoArray):
    print('TTL channel info at index: {}'.format(i))
    print(ttlInfo)
    print('')
    
valveInfoArray, valveTypeArray = fgt_get_valveChannelsInfo()
for i, valveInfo in enumerate(valveInfoArray):
    print('Valve channel info at index: {}'.format(i))
    print(valveInfo)
    print("Valve type: {}".format(valveTypeArray[i]))
    print('')

## Close the session
fgt_close()

The result are the follow :

OK
None
2025-05-29T10:25:57.295+0200    INFO    ThreadId(14856) Fluigent SDK version 23.0.0.0
2025-05-29T10:25:57.295+0200    DEBUG   ThreadId(14856) API_CALL        fgt_detect()
Number of controllers detected: 1
Detected instrument at index: 0, ControllerSN: 13334, type: F_OEM

2025-05-29T10:25:57.317+0200    DEBUG   ThreadId(14856) API_CALL        fgt_initEx()
2025-05-29T10:25:57.341+0200    TRACE   ThreadId(10940) FRAME_IN        04d8:0017:0000:3416      5a 70 83 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2025-05-29T10:25:57.342+0200    TRACE   ThreadId(10940) FRAME_OUT       04d8:0017:0000:3416      a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2025-05-29T10:25:57.371+0200    TRACE   ThreadId(10940) FRAME_IN        04d8:0017:0000:3416      80 71 00 00 00 00 00 00 00 01 03 34 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2025-05-29T10:25:57.388+0200    TRACE   ThreadId(10940) FRAME_IN        04d8:0017:0000:3416      5a 72 83 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2025-05-29T10:25:57.389+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_pressureChannelCount()
Total number of pressure channels: 0
2025-05-29T10:25:57.389+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_sensorChannelCount()
Total number of sensor channels: 0
2025-05-29T10:25:57.389+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_TtlChannelCount()
Total number of TTL channels: 0
2025-05-29T10:25:57.389+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_valveChannelCount()
Total number of valve channels: 0

2025-05-29T10:25:57.389+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_controllersInfo()
Controller info at index: 0
<class 'Fluigent.SDK.fgt_CONTROLLER_INFO'>
SN: 13334
Firmware: 1.03
index: 1933664256
InstrType: F_OEM

2025-05-29T10:25:57.390+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_pressureChannelsInfo()
2025-05-29T10:25:57.390+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_sensorChannelsInfo()
2025-05-29T10:25:57.390+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_TtlChannelsInfo()
2025-05-29T10:25:57.390+0200    DEBUG   ThreadId(14856) API_CALL        fgt_get_valveChannelsInfo()
2025-05-29T10:25:57.391+0200    DEBUG   ThreadId(14856) API_CALL        fgt_close()
2025-05-29T10:25:57.397+0200    TRACE   ThreadId(10940) FRAME_IN        04d8:0017:0000:3416      5a 73 83 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Best regard ,

Jérémie

Thank you for your work

JeremieBours avatar May 29 '25 08:05 JeremieBours

Hello,

From the logs, the INT-OEM board responds as if there weren't any modules connected to it at all, so there is nothing that can be done on the SDK side. This indicates that your boards are damaged or improperly configured. Please contact support to discuss having them repaired or replaced.

Best regards, Ygor

Ygor-Oliveira avatar Jun 02 '25 16:06 Ygor-Oliveira

Hello ,

Thank you very much for the support ! I will then continue with Fluigent ,

Best regard,

JeremieBours avatar Jul 07 '25 09:07 JeremieBours