clariusdev / cast Goto Github PK
View Code? Open in Web Editor NEWAPIs for Researchers and Marketplace Apps
Home Page: https://www.clarius.com
License: BSD 3-Clause "New" or "Revised" License
APIs for Researchers and Marketplace Apps
Home Page: https://www.clarius.com
License: BSD 3-Clause "New" or "Revised" License
Hello. I am trying to run one of the python examples (pycaster.py) but this error is popping up. I have failed to figure out why I can not import pycast.
I downloaded the binaries at https://github.com/clariusdev/cast/releases/download/v9.0.0/clarius-cast-v900-windows.zip and the source code at https://github.com/clariusdev/cast/archive/refs/tags/v9.0.0.zip.
I then copied the pycaster.py to the clarius-cast-v900-windwos folder containing the pycast.pyd, cast.lib and cast.dll. When I run the pycaster.py in cmd, that error pops up.
How can I resolve this error?
Hey,
I tried to download the Windows binaries of the new 8.6.0 version, but when I unzip it, it contains the MacOS binaries inside.
Hi Clarius,
While adding more options to caster example available on master branch, cusCastSetFormat
appears to be missing from clarius-cast-v801-linux.zip
libraries:
~/sources/github.com/clariusdev/cast/src/example/caster$ make
mkdir -p build/./
g++ -I./ -I./build -I../../include -std=gnu++14 -c main.cpp -o build/./main.cpp.o
g++ ./build/./main.cpp.o -o build/caster -L../../lib -lcast -lpthread
/usr/bin/ld: ./build/./main.cpp.o: in function `init(int&, char**)':
main.cpp:(.text+0x15d5): undefined reference to `cusCastSetFormat'
collect2: error: ld returned 1 exit status
make: *** [Makefile:24: build/caster] Error 1
This can be reproduced with this fork: https://github.com/daudrain/cast.
This issue occurs when testing the v8.6.0 release.
Environment:
Ubuntu 20.04.3 LTS
Python 3.8.10
Connection - trough an WiFi router without internet connection.
Issue summary:
(py_venv) :~$ python pycaster.py --address 192.168.100.159 --port 36671
initialization succeeded
connected to 192.168.100.159 on port 36671
press ('q' to quit) ('a' for action): imaging running
imaging frozen
imaging running
imaging frozen
imaging running
imaging frozen
q
(py_venv) :~$ python pycaster.py --address 192.168.100.159 --port 5828
initialization succeeded
connected to 192.168.100.159 on port 5828
press ('q' to quit) ('a' for action): a
(f)->freeze, (i)->image, (c)->cine, (d/D)->depth, (g/G)->gain: f
press ('q' to quit) ('a' for action):
(f)->freeze, (i)->image, (c)->cine, (d/D)->depth, (g/G)->gain: f
press ('q' to quit) ('a' for action): a
(f)->freeze, (i)->image, (c)->cine, (d/D)->depth, (g/G)->gain: f
press ('q' to quit) ('a' for action): a
(f)->freeze, (i)->image, (c)->cine, (d/D)->depth, (g/G)->gain: F
press ('q' to quit) ('a' for action): q
Segmentation fault (core dumped)
(py_venv) :~$ ping 192.168.100.159
PING 192.168.100.159 (192.168.100.159) 56(84) bytes of data.
64 bytes from 192.168.100.159: icmp_seq=1 ttl=64 time=20.3 ms
64 bytes from 192.168.100.159: icmp_seq=2 ttl=64 time=2.55 ms
64 bytes from 192.168.100.159: icmp_seq=3 ttl=64 time=3.75 ms
64 bytes from 192.168.100.159: icmp_seq=4 ttl=64 time=2.57 ms
64 bytes from 192.168.100.159: icmp_seq=5 ttl=64 time=3.88 ms
64 bytes from 192.168.100.159: icmp_seq=6 ttl=64 time=2.53 ms
64 bytes from 192.168.100.159: icmp_seq=7 ttl=64 time=4.06 ms
64 bytes from 192.168.100.159: icmp_seq=8 ttl=64 time=3.29 ms
64 bytes from 192.168.100.159: icmp_seq=9 ttl=64 time=4.02 ms
64 bytes from 192.168.100.159: icmp_seq=10 ttl=64 time=2.80 ms
^C
--- 192.168.100.159 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 2.526/4.971/20.283/5.138 ms
Your new export header cast_export.h (https://github.com/clariusdev/cast/blob/master/src/include/cast/cast_export.h) doesn't support visual studio (MSVC).
MSVC doesn't recognize attribute((visibility("default"))), but instead use __declspec(dllimport/export).
See your previous export header which worked fine: https://github.com/clariusdev/cast/blob/c932558cdb0283e9d4d9e3c7ecfdba433867ff09/src/include/listen/listen_export.h
Hi Kris,
It seems the downloading raw data with Clarius Cast is not stable:
Does the Clarius probe stop buffering or rolling the buffer after the buffer is full?
How big is the rf buffer on the probe?
Attached is our tests for your reference:
Thank you,
Hello,
While recording raw images with this packages we obtain the following images. I can decode most of the images given to the newRawImage
callback but not the ones of size 192x3904 @ 16 bps
. I added a >>
to indicate these lines.
new image (ps): 142156180010, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142247769280, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142293563900, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142339734730, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142431576530, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142477461140, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142523252870, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
>> new image (ps): 142156180010, 192x3904 @ 16 bps, 38.50 um/s, 300.00 um/l, jpg=0
new image (ps): 142614968510, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142661659870, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142707677580, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142801135130, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142847546990, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 142987705000, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
new image (ps): 143033494720, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
>> new image (ps): 142707677580, 192x3904 @ 16 bps, 38.50 um/s, 300.00 um/l, jpg=0
new image (ps): 143171762080, 192x592 @ 8 bps, 255.28 um/s, 300.00 um/l, jpg=0
Naively decoding the bytes as uint8
, uint16
, float16
did not give me good images. I also tried to change the dimension / order of the tensor but it did not help. Any advice? What are these images? Spectrum, envelop or RF? I wondered if it was LZO compressed.
Thank you for your help
Trying to use pycast with Python 3.7. Installed via pip. Module throws an error on import. ModuleNotFoundError: No module named 'common'
I'm trying to connect to the device through the API using the cast.dll. I am unable to connect and there does not seem to be any diagnostics on how to solve the problem.
I've created the caster instance by calling cusCastInit. I then call cusCastConnect with the IP and port of the device. Both calls return SUCCESS. When I call cusCastIsConnected afterwards it returns as No Connection (0).
When I initialize the caster I get a message stating WARNING: QApplication was not created in the main() thread
and when destroying the handle I get QEventDispatcherWin32::wakeUp: Failed to post a message (Invalid window handle.)
Hello,
I am trying to run the Clarius API with a Linux machine, but I need some advice about the pathing.
For example, I write a script to collect data and have files like the followings
Clarius Project/
├── DataAcqTool.py
├── cast/
├── libcast.so
└── pycast.so
I run the script with the command line '$ python3 /home/Jack/ClariusProject/DataAcqTool.py'
I don't think this is the correct directory to put pycast.so
and libcast.so
.
I tried to put pycast.so
to the same level with the main .py script, but it still can’t locate the shared library
I have seen README.md says the following, but I can’t get my head around setting it up. Could you help me, please?
Copy pylisten.so and liblisten.so to {listener_path}/src/python
Execute: LD_LIBRARY_PATH=. python3 {clarius_python_example}.py
Thank you.
Hi,
I understand that this is not the place to cast technical questions other than those related to the Clarius Cast codes. Anyhow, I have contacted the Clarius Support team and I have been redirected to this page to ask any kinds of technical issues with the package which is weird. Here are a few:
The exams are not saved on the local device (which uses an up-to-date android platform) no matter the selected output format e.g., JPEG, or DICOM. It shows the following message: Unable to export exam from [date and time of the exam] to [selected format]. This is as though the application's got permission to the storage and the exams are successfully uploaded to the Clarius Cloud. This shouldn't be some complicated procedure and should be running smoothly as shown on the tutorial videos and manuscripts (That the app is designed so that the exam data are stored simply on the local device by default).
Also, we are interested in Raw data. I am able to capture the raw data and send them to the Clarius cloud, and then use them with the MATLAB and Python functions/classes provided which is great. Although the problem of saving raw data on the android device remains still, as no data (not even jpeg images) are stored on the device
In a different matter, I have tried the Mobile API and run them on the device with android studio. When I press "connect" a message is shown: Connected: true. However, I cannot get any other features to work. An "Error: no license" message is shown for any kinds of requests. This is as though I follow all the necessary steps to make use of the API e.g., connecting the scanner and running the Clarius App in the background. Does this necessarily mean that our scanner does not cover this API? The same situation holds true for the Clarius Cast.
Does the mobile API allow capturing raw data? (because I don't see the option in the quickstart app but I was thinking it might do by checking some options on the clarius app as is done directly on the app itself)
Thank you very much for your time, consideration and for your help in advance.
Best regards,
Reza
Problem solved
The new Clarius Mobile App sometimes listens on port 0. This doesn't make sense as I know port 0 does not exist in TCP/IP protocol. If I use Clarius Cast Api to connect to this port 0, I get an error of "The requested address is not valid in its context".
Environment:
Dear Clarius-Team, dear @clariusk,
First of all, we've been using your API packages for a while and they provide a great backbone for our software, thanks for your efforts!
Observed Behaviour
When compiling the example CLI application on Windows, the ClariusNewProcessedImageFn
is not called and no images are streamed since API v7.1.0. The same behaviour worked in v6.1.5.
The line of interest is this: https://github.com/clariusdev/listener/blob/master/src/example/console/main.cpp#L85
Expected Behaviour
The Windows API should receive processed images from the probe, when the CLI software prints "imaging".
Steps to Reproduce
I hope the behaviour description is sufficient. We're happy to provide any more details for you, i.e. if you need certain stacktraces etc. Thanks for the great work and support!
Best,
Sven
Greetings,
I was exploring the timestamp field that the probe provides with each ProcessedImageInfo, however, I got a value like this 45197133150
, and after searching the internet I couldn't convert it to a date format, the UNIX epoch converter says it's from the year 3402. How can I convert this value into a regular Date format?
Thanks in advance!
I am having an issue with the example program in which I can open the application, connect to the clarius via wifi direct and use the buttons with success but the image from the ultrasound does not appear in the main screen with it just showing the black background. I have made no alterations to the code so I don´t really know why this is happening, any ideas? Thanks
-Pedro
This is not an issue. A question. Will your software using the L7 or L15 scanner allow stitching together scan slices to build a 3D volumetric image
After the last API update we get the following error message "error: connect failure: Exception ocurred (Error connecting to TCP socket: Connection refused)" using the caster example and our own software.
We have tried both on windows and ubuntu, and two different scanners/phones, same error message.
Scanner is in "research mode" with port 5858, and the app is up to date.
Hey,
I'm trying to run the 'caster_qt' example on MacOS 12.0.1, i just downloaded the 8.6.0 version of the library and i'm getting a lot of errors when running the executable. Here's one example:
objc[2627]: Class QMacAutoReleasePoolTracker is implemented in both .../QtCore (0x11093e9f8) and .../libcast.dylib (0x11e0a5200). One of the two will be used. Which one is undefined.
I'm using CMake to generate the build files and compiling with make.
Is there a quick fix to make it work?
Hey Guys, sorry to bother you again. The callback for the processed image data is not working for me on the pycaster example. The newProcessedImage callback does not run.
I've established the connection and the functionality of theother callbacks such as freeze and the buttons. I'm also able to use the user commands to signal the iOS application to save an image. I can not seem to access the data from that saved image in the python application.
Is the way to trigger the Processed Image callback through the Capture user function?
The Visual studio project file was removed in v7.3.0. The readme has not been updated. Is there any plan to add the VS project file? What is the recommended way to build on Windows?
Hi,
We have recently acquire a phased-array Clarius probe and are very excited to develop upon it!
However, we are facing issue understanding which port to provide when launching the listener.
Based on the pylistener.py, we found in main():
parser.add_argument(‘--port’, ‘-p’, dest=‘port’, type=int, help=‘port of the probe’, required=True)
based on listen.h, we have:
/// @param[in] port the tcp port that the scanner’s listener is setup on
From our understanding, 3 devices are running :
probe, mobile/tablet running clarius app, the device running the listener
Is this port related to the probe or to the device running the listener?
We tried to connect all devices to the probe wifi or on a common LAN wifi using the preset port “5828” we saw in the code and using the IP provided in Clarius app.
For exemple, running on the probe wifi with the console exemple:
$ build/console -a 192.168.1.1 -p 5828
starting listener...
error: connect failure: Exception ocurred (Error connecting to TCP socket: Connection refused)
could not connect to scanner
NB: we can ping the probe from the device running the listener when running this.
we have also scanned the open ports of the probe and only found the ports 36481 and 36929 open. we tried to used them unsuccessfully.
My guess is that we are misunderstanding the connection process? Could you please enlighten us?
Thx!
NB:
This was tried on mac and ubuntu
The software version is 7.1.0-104 and we are using the latest release of the listener
Is there any extra configuration or settings required to enable positional data (in addition to it being a licensed feature)? At the moment we just seem to get a NULL ClariusPosInfo pointer when the new image events come in via the 'newProcessedImageFn' callback.
Hello,
Using the cast project (latest version) on linux using Qt I noticed that by connecting the ultrasound probe the IMU sensors (accelerometer, gyroscope, magnetometer) are not displayed or printed. Also checking the code I found no parts of code that mention it.
I was wondering in which project files or libraries their values were received.
Thanks in advance
Release 8.0.1 cast.lib has no function signature for cusCastProbeInfo(). When I try to use it on windows, it throws error *unresolved token (0A0007B1) "extern "C" int __cdecl cusCastProbeInfo(struct _ClariusProbeInfo )"
So I've been trying to get the examples up and running as a way of ensuring everything is working, and that is where the problems occur. The issues I ran into are these:
File "pysidecaster.py", line 7, in
import pycast
File "/anaconda3/lib/python3.6/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 142, in _import
return original_import(name, *args, **kwargs)
File "/anaconda3/lib/python3.6/site-packages/pycast/init.py", line 26, in
import methods
File "/anaconda3/lib/python3.6/site-packages/shiboken2/files.dir/shibokensupport/feature.py", line 142, in _import
return original_import(name, *args, **kwargs)
ModuleNotFoundError: No module named 'methods'
and when I try to fix it,
Darrens-MBP:python darren$ pip install methods
ERROR: Could not find a version that satisfies the requirement methods
ERROR: No matching distribution found for methods
with a similar situation occuring when I try to run pycaster.py. I also tried following the linux instructions, which allowed me to run pycaster.py on my own machine, but throws an error regarding the @rpath when Casey (our colleague who actually has the scanner) tried repeating the process on her own machine.
Darrens-MBP:caster darren$ g++ main.cpp -o run.out
main.cpp:56:10: warning: 'auto' type specifier is a C++11 extension
[-Wc++11-extensions]
for (auto i = 0; i < npos; i++)
^
main.cpp:293:21: error: no matching constructor for initialization of
'std::thread'
std::thread eventLoop(processEventLoop, std::ref(quitFlag));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/thread:408:9: note:
candidate constructor template not viable: requires single argument '__f',
but 2 arguments were provided
thread::thread(_Fp __f)
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/thread:289:5: note:
candidate constructor not viable: requires 1 argument, but 2 were provided
thread(const thread&);
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/thread:296:5: note:
candidate constructor not viable: requires 0 arguments, but 2 were
provided
thread() _NOEXCEPT : __t_(_LIBCPP_NULL_THREAD) {}
^
1 warning and 1 error generated.
Namely, that the constructor for eventLoop doesn't exist, which is odd, since it seems to have no errors from a technical standpoint, and yet won't compile. It's 100% possible that I'm just overlooking something very simple, but I can't see a way to get everything up and running correctly.
Let me know whatever other information I can provide to help us figure this out.
Hello
I've been able to display the Ultrasound and RfData feed by following the caster_qt
example, however there's no example to show the PwSpectrum
and MSpectrum
feed. I tried to copy and paste the RfData example to try and use it on the Spectrums, but i can't manage to show a coerent image.
Can someone help me?
Thanks in advance!
Hi
I'm interested in deploying the cast API on an iOS device as part of a 3rd party application, however I don't see iOS listed as a supported platform:
Regards
Wilmar
Hello everyone!
After upgrading to v8.0.1, the caster example (src/example/caster
) fails to build on Ubuntu 18.04 LTS.
This is because libcast.so
requires libmysqlclient.so.21
and some other dependencies, that it did not require previously.
The build fails with a linker error:
/usr/bin/ld: warning: libmysqlclient.so.21, needed by ../../../vendor/clarius/lib/libcast.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libodbc.so.2, needed by ../../../vendor/clarius/lib/libcast.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libpq.so.5, needed by ../../../vendor/clarius/lib/libcast.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libsybdb.so.5, needed by ../../../vendor/clarius/lib/libcast.so, not found (try using -rpath or -rpath-link)
The mysql shared library is provided by this package which is only available on Ubuntu 20.04.
I am curious why this dependency is required now. Was this done intentionally?
The mysql requirement is not documented anywhere.
I also noticed that the binary size of libcast.so
increased from ~90MB to ~210MB.
Our entire dev team is using Ubuntu 18.04 at the moment, it would be very helpful if upgrading was not required.
Thanks in advance!
Error message as follows
Traceback (most recent call last):
File "Clarius/ClariusCast_v860/cast-8.6.0/src/python/pycaster.py", line 5, in <module>
import pycast
ImportError: dlopen(Clarius/ClariusCast_v860/cast-8.6.0/src/python/pycast.so, 2): Symbol not found: __Py_tracemalloc_config
Referenced from: Clarius/ClariusCast_v860/cast-8.6.0/src/python/pycast.so
Expected in: flat namespace
in Clarius/ClariusCast_v860/cast-8.6.0/src/python/pycast.so
Sorry to disturb, this is probably something really obvious that I am not seeing but when using the caster_qt example program, as I freeze the image and click on the request button, all I get is the message stating "No raw data currently buffered" and I can not seem to understand why. Is there something I should do prior to clicking on that button?
The CAST API example code does not run properly. I can launch the interface just fine, but as soon as I enter the port number and click connect, no image displays.
Hi,
I need to use RF data for a project. The RF data sampling was low so I decided to use IQ data instead. Do you have any code to convert IQ to RF data?
I tried to convert IQ data to RF myself but it seems that some kind of filtering is required since it was noisy.
Regards,
Ali K. Z. Tehrani
I am using the Cast API to collect RF data. It seems the Clarius probe only buffers raw data when the mode is RF and the Waveform button is activated. I can use USER_FN_MODE_RF to turn on RF mode, but I couldn't find the code to activate the Waveform button.
Dear team,
We are trying to calibrate the timestamps of the received images with a standard unix timestamp (like time.time() in python for example). We realised that the timestamp that is being sent with the image is basically the countdown from when the probe was turned on, but we can't find the time in which the probe was turned on.
We are referring to this timestamp:
https://github.com/clariusdev/cast/blob/master/src/include/cast/cast_def.h#L56
Is there any way to find the start time of the timestamp of the probe?
Thanks a lot in advance!
Hi,
do you have any information about the resolution and accuracy of the time stamp of the US data?
Matias
Dear Clarius-Team,
thanks for your efforts in building this API. We recently purchased one of your ultrasound scanners and are very happy with the imaging quality. Now we are starting to work with the API. After being able to use the API from the C++ examples, we now also wanted to try the python examples.
However, we have problems importing the pylisten module for your example code (pylistener.py and pysidelistener.py).
I tried to add the pylisten.pyd and the listen.dll to the PYTHONPATH or also copied it in the same directory as the python files, but I keep on getting an import error:
ImportError: DLL load failed while importing pylisten: The specified module could not be found
I use Python3.8 on Win10 64Bit.
( Please excuse this trivial question, I just wanted to rule this one out: The import pylisten
refers to the import of the pylisten.pyd DLL from the binaries download, and has nothing to do with the pip-package with the same name (https://github.com/MycroftAI/pylisten), correct? )
Do you have any hint on what I might be doing wrong? Any help is much appreciated.
Best,
Daniel
Hello a colleague of mine (Darren Lund) has been working with [redacted] regarding a Clarius US project. If [redacted] is available please have them contact me? I am needing a specific Clarius IP address and port in order to allow an API connection to work.
I have tried the IP listed on the screen when using the Clarius probe.
I have copies of terminal coding used to help troubleshoot.
Thank you,
-Casey
Hi,
I have just acquire a Clarius probe that should be delivered in the coming weeks.
In the mean time, I am wondering if it is possible to run the listener using the virtual probes of the Clarius App.
Thank you!
When performing a test on our continuous integration we found that the linux library breaks it, because it wants to connect to a display in clariusInitListener
.
There is a work-around specifying QT_QPA_PLATFORM=minimal
before initialization. However, there is no obvious reason for the library to connect to a display.
Does the library initialize a QApplication
? If yes, can it be turned into a QCoreApplication
?
Hello, I am trying to use the caster standalone command-line program but I am getting an error while compiling the program: "Error: the option '--address' is required but missing".
When run the pysidecaster.py in anaconda prompt on a windows 10 machine. The GUI opens, we add the IP address and the port number and then press the “Connect” button. The connection is successful but no image shows up in the image section of the GUI. Only a blank black window is shown.
When we freeze the imaging using the Clarius App on the phone, the status bar in the GUI window indicates “Image Stopped” and when we unfreeze the imaging, the GUI window status bar indicated “Image running”. However, we still don’t see any image being displayed.
Here is the log as seen in the anaconda prompt:
(base) C:\Users\xxxx\Desktop\clarius\cast-9.0.0\src\python\python pysidecaster.py
Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:
QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
QT_SCREEN_SCALE_FACTORS to set per-screen DPI.
QT_SCALE_FACTOR to set the application global scale factor.
WARNING: QApplication was not created in the main() thread.
Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:
QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
QT_SCREEN_SCALE_FACTORS to set per-screen DPI.
QT_SCALE_FACTOR to set the application global scale factor.
Image Stopped
Image Running
Note that we also get warnings about some libraries.
The "python" folder from which we run the pysidecaster.py contains the following files:
Dear Clarius-Team,
We are developping an Android app which includes your API and facing an issue when calling clariusInitListener
.
Here the simplified code used to test your API
#include <listen/listen.h>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QStandardPaths>
int main(int argc, char* argv[]) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/main.qml"));
QObject* object = (QObject*)engine.rootObjects()[0];
int success = clariusInitListener(
argc, argv,
QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)
.toStdString()
.c_str(),
[](const void*, const ClariusProcessedImageInfo*, const int,
const ClariusPosInfo*) { return; },
[](const void*, const ClariusRawImageInfo*, int,
const ClariusPosInfo*) { return; },
[](int) { return; }, [](int, int) { return; }, [](int) { return; },
[](const char*) { return; }, [](int) { return; }, 640, 512);
if (success == 0) {
object->setProperty("logText", "Success");
} else {
object->setProperty("logText", "Failure");
}
return app.exec();
}
and its associated QML file (main.qml
)
import QtQuick 2.0
import QtQuick.Controls 2.1
ApplicationWindow {
property string logText: ""
visible: true
Text {
anchors.centerIn: parent
text: logText
}
}
When I launch the app in Android, I have the following issue
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Xiaomi/santoni/santoni:7.1.2/N2G47H/V11.0.2.0.NAMMIXM:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 29597, tid: 29615, name: qtMainLoopThrea >>> org.qtproject.example.clariustest <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: android.
'
x0 0000000000000000 x1 00000000000073af x2 0000000000000006 x3 0000000000000008
x4 00000000000001dc x5 0000000000008080 x6 0000007f889df000 x7 0000000000000000
x8 0000000000000083 x9 ffffffffffffffdf x10 0000000000000000 x11 0000000000000001
x12 ffffffffffffffff x13 00000000ffffffff x14 00000000001dcc50 x15 0030c3689c65c984
x16 0000007f86fd9ec8 x17 0000007f86f87550 x18 00000000ffffffff x19 0000007f68f4c4f8
x20 0000000000000006 x21 0000007f68f4c450 x22 0000000000000019 x23 0000007f6471fe89
x24 0000007f68f4a364 x25 0000007f647aa000 x26 0000000000000002 x27 0000007f647aa000
x28 0000007f647aae78 x29 0000007f68f4a100 x30 0000007f86f849e0
sp 0000007f68f4a0e0 pc 0000007f86f87558 pstate 0000000060000000
backtrace:
#00 pc 000000000006b558 /system/lib64/libc.so (tgkill+8)
#01 pc 00000000000689dc /system/lib64/libc.so (pthread_kill+64)
#02 pc 0000000000023f28 /system/lib64/libc.so (raise+24)
#03 pc 000000000001c9ac /system/lib64/libc.so (abort+52)
#04 pc 00000000000c29a4 /data/app/org.qtproject.example.clariustest-1/lib/arm64/libQt5Core.so
#05 pc 00000000000c316c /data/app/org.qtproject.example.clariustest-1/lib/arm64/libQt5Core.so (_ZNK14QMessageLogger5fatalEPKcz+156)
#06 pc 000000000012bb78 /data/app/org.qtproject.example.clariustest-1/lib/arm64/libQt5Gui.so (_ZN22QGuiApplicationPrivate25createPlatformIntegrationEv+2904)
Do you have any idea why the initialization of the listener makes the app crash? Could it be because I do not link the library liblisten_plugin.so
to my project? Actually, I do not quite understand the purpose and the usage of the liblisten_plugin.so
library, and I thought that my issue may be related to it.
If I run the code on Ubuntu 18.04, it works fine.
If I use clariusIsConnected
instead of clariusInitListener
, it does not crash, meaning that the API can be called successfully from the Android app.
The Android app is built with SDK Version: 3.0, NDK Version: 21.1.6352462, ABI: arm64-v8a.
Thanks in advance!
Émilie
Hi! I am having the same issue, using a wireless Clarius C3, Ubuntu 18, software version 7.1.0 for listener API. I have the Listener API software license for the probe (though I don't recollect activating anything, just connected to the mobile app). All devices are on the probe's wifi, TCP connection established with the probe, but every time I get a message "could not connect to scanner". I was wondering what resolved the issue for @olim0. Thanks!
Originally posted by @lydiazoghbi in #5 (comment)
Dear team,
We are trying to create a simple loop that will read incoming processed images from our L15HD and we took the callbacks examples you posted at https://github.com/clariusdev/cast/blob/master/src/example/caster/main.cpp but we are unable to receive images.
Using the callback newProcessedImageFn, the newImage pointer is an address to a variable containing a single zero. Basically, when using this code as a callback to the processed images and listening to it:
/// callback for a new image sent from the scanner
/// @param[in] newImage a pointer to the raw image bits of
/// @param[in] nfo the image properties
/// @param[in] npos the # of positional data points embedded with the frame
/// @param[in] pos the buffer of positional data
void newProcessedImageFn(const void* newImage, const ClariusProcessedImageInfo* nfo, int npos, const ClariusPosInfo* pos)
{
PRINT << "new image (" << newImage << "): " << nfo->width << " x " << nfo->height << " @ " << nfo->bitsPerPixel
<< "bits. @ " << nfo->micronsPerPixel << " microns per pixel. imu points: " << npos;
auto image = *(reinterpret_cast<const int*>(newImage));
if (npos)
printImuData(npos, pos);
}
The variable image contains a single zero.
Can you please tell us what we are doing wrong?
Our machine is a Windows 10 machine, and our project was compiled in visual studio 2019 by donwloading the lib files from releases and including files and directiories in the same way that was suggested in the provided makefile. The machine is connected to the probe using its own Wifi and the callbacks are called expectedly when the capture session begin.
Thanks in advance!
Dean
Hello,
I am a new user of Clarius and I want to stream data (image) from Clarius to 3dslicer. I tried to do that by using ClariuStream.apk. However, I couldn’t receive the image in 3d slicer. Therefore, I first want to run the examples to make sure everything is working properly. I tried to run pycaster.py in cast version 9. I copied the files inside the “clarius-cast-v900-windows” folder to the “python” folder and the folder now contains the following files.
• Cast.dll
• Cast.lib
• Pycast.pyd
• Pycaster.py
• Pysidecaster.py
• README.md
Now when I run the pycaster.py it gives this error:
import pycast
ImportError: DLL load failed: The specified module could not be found.
I appreciate it if you can help me in this regard.
Also, if you know how can I get the image in 3d Slicer that would be very helpful.
Hello
I was trying to increment the depth value with a button using USER_FN_SET_DEPTH
, and immediately noticed it wasn't increasing or decreasing the depth, then i tried to do the same thing with the USER_FN_SET_GAIN
, and it affected the depth, so i think these two user function commands are switched.
Another thing, when i try to increase the depth in 2cm using this: cusCastUserFunction(USER_FN_SET_GAIN, 2, nullptr)
the depth goes to the max, which is 7cm.
The app is up to date and i'm using version 8.0.1
We currently test a demo device (L7 HD Scanner) and Mr Noethen (Territory Manager, Germany ) and Mrs. Thomas (Support) told us to create a issue tp provide a fast solution about the functions of the research packages.
• Python version 3.7.7
• Pycast version pip install pycast==v0.1.5-alpha
o Also: Github version GitHub - T-002/pycast: Python forecasting and smoothing library
Problem executing python examples:
(venv) C:\Users\E7111\Desktop\clarius_repo\cast\src\python>python pycaster.py --address 192.168.1.1 --port 43299
Traceback (most recent call last):
File "pycaster.py", line 123, in
main()
File "pycaster.py", line 84, in main
cast = pycast.Caster(newProcessedImage, newRawImage, freezeFn, buttonsFn)
AttributeError: module 'pycast' has no attribute 'Caster'
--> Module Caster neither found in pip verison of pycast nor gitrhub version and even commit history
Please consider a fast answer, since we only have our demo device for 3 more days, to evaluate wether we need the research package or not.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.