Giter VIP home page Giter VIP logo

logicanalyzer's People

Contributors

cpswan avatar dmhl avatar gusmanb avatar jasonyang170 avatar moreati avatar shawnferry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

logicanalyzer's Issues

LogicAnalyzer-5.0.0.0-osx-arm64

I got the LogicAnalyzer run on M1 chip Macos, but I can't start up the soft, here is the message below
zsh: killed ./LogicAnalyzer

Could someone please help, thanks a lot.

Playback feature

Hi,
can be nice to have a playback feature.
After you recorded the signal you can play it back to simulate the original device.
Do you think it is feasible and interesting?
thank you very much for the project!

Headers for PCBs?

Where did you find the 2x15 headers for the PCBs? I can't quite tell from the photos but it looks like the Logic PCB as one 2x15 Female header, and the Level Shifter PCB has one 2x15 Male header and one 2x15 Female header? All headers are Right Angle as well it looks like. I've tried to find these headers on Mouser and a few other sites, but can't find them.

Some LogicAnalyser problems/suggestions

The LogicAnalyser does not keep the configured state:

on recapture, it looses the setting "samples in screen". What is more annoying is that it also looses the information about the protocol analyzer. Having to tell the program for every capture that I want to do an I2C-analysis and having to redefine the SDA/SCL channels is cumbersome.

It would be great if this would be kept as part of the configuration. Some more things on the whishlist:

  • accept a file with a configuration on the commandline.
  • if I add SDA/SCL to the channel description, take this as a hint and configure the I2C protocol analyzer (same for other protocols)
  • add a sort of clickable capture map where I can see where something is happening. Of course, scrolling to the right works fine, but this would help navigating to the correct places. Something like a keyboard shortcut "skip right to the next trigger" would also be great.
  • AppConfig.json and cpSettingsSerial.json are always written in the current work-directory. I have these files now all over the place. They should ideally go to $HOME/.config/LogicAnalyzer. Or at least always to the same directory (don't know if multiplatform binaries support this in a generic way, but Windows has it's standards, Linux and I suppose Apple as well, so it could be there is some sort of abstraction available).

Another note: the visual design does not seem to be very ergonomic (very low contrasts of controls). In fact in my first experiments I missed the scrollbar on the bottom, because I could not identify it. But maybe this is Linux specific.

Protocol Analyzer option grayed out.

Hey! Great work on this project it is very impressive.
I've been trying to get it up and running to debug SPI signals from another pico, but I can't seem to get the protocol analyzer feature working as the option is always grayed out. I'm using the latest release (2.1.0.1) on Windows 10 22H2. I saw issue #22 and copied the analyzers folder from release 2.0.0.0 but no luck. I am also using the latest firmware release.
Steps to reproduce:

  1. Connect pico to computer
  2. Open Logic Analyzer and connect to pico (COM4)
  3. Try protocol analyzer option (can't)

I've tried this on Windows 22H2, and Ubuntu 20.04.

I'm wondering if it could be my error and I am incorrectly using the software. Let me know if you need any more information and thanks in advance!

Here is what the issue looks like on Windows.
Screenshot 2022-12-23 121803

ClCapture naming the channels

Hi,
it would be useful if ClCapture could name the channels when sampling. In this use case ClCapture is started in a loop and exporting the data to a different file for each run. Having the channel names in the captured files would be really helpful.

Regards,

Channel name and GPIO number don't match

Thanks for the tool, it works very well.
However, I've an issue with the reported channel number and the board GPIO number.
Typically, I'm plugging a I2C connector with (VCC, GND, SCL, SDA) pin on GPIO (5, GND, 6, 7) (VCC is just because I already have a 4 pin connector and I don't want to make an adapter).

In the interface, I get SCL on Channel 5, SDA on Channel 6 and zero on channel 7. I've also tried to export the capture and it's labeled the same way. Please notice that it's not a real issue since I can identify the signals from their shape, but it's disappointing.

I've tried to plug the connector on GPIO (18, GND, 17, 16) and in that case, I capture SCL on Channel 17, but I'm not successful in capturing SDA on either channel 16 or 18 (both are zero).

Installation on MAC M2

Do you have a simple step by step for installation on the Apple ARM based computers?
Is there sample data available to practice with while waiting for hardware?

osx-arm

The releases only list osx-x86 but theses days osx-arm is really needed as well.
Would be nice to also have that option.

Serial port hangs if sampling interrupted

Hi!
The serial port hangs if ClCapture is killed by Ctrl-C while the logic analyzer is sampling. ClCapture aborts, but ClCapture (and LogicAnalyzer) can not open the port unless the Pico is powered off and on. Same behaviour in version 3-5 as well.

This is on Ubuntu 22.04.

Using "Abort" in LogicAnalyzer works without issues, but gives the following message in the console:

The port is closed. - at System.IO.Ports.SerialStream.Read(Byte[] array, Int32 offset, Int32 count, Int32 timeout)
at System.IO.Ports.SerialStream.Read(Byte[] array, Int32 offset, Int32 count)
at System.IO.Stream.Read(Span`1 buffer)
at System.IO.BinaryReader.InternalRead(Int32 numBytes)
at System.IO.BinaryReader.ReadUInt32()
at SharedDriver.LogicAnalyzerDriver.ReadCapture(Int32 Samples, Byte Mode) in C:\Users\geniw\source\repos\LogicAnalyzer\SharedDriver\LogicAnalyzerDriver.cs:line 314

Thanks for a new version!

Regards

instead the TXU0104PWR

Hi,Can i use the TXB0104 for instead TXU0104PWR .becasue TXB0104is cheaper than that one.

linux x86 runtime crash

System Information:
image

dotnet --version
7.0.107

Error message:

Unhandled exception. System.InvalidOperationException: Default font family name can't be null or empty.
   at Avalonia.Media.FontManager..ctor(IFontManagerImpl platformImpl) in /_/src/Avalonia.Visuals/Media/FontManager.cs:line 33
   at Avalonia.Media.FontManager.get_Current() in /_/src/Avalonia.Visuals/Media/FontManager.cs:line 53
   at Avalonia.Media.Typeface.get_GlyphTypeface() in /_/src/Avalonia.Visuals/Media/Typeface.cs:line 69
   at Avalonia.Media.TextFormatting.TextCharacters.TryGetRunProperties(ReadOnlySlice`1 text, Typeface typeface, Typeface defaultTypeface, Int32& count) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 132
   at Avalonia.Media.TextFormatting.TextCharacters.CreateShapeableRun(ReadOnlySlice`1 text, TextRunProperties defaultProperties) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 62
   at Avalonia.Media.TextFormatting.TextCharacters.GetShapeableCharacters() in /_/src/Avalonia.Visuals/Media/TextFormatting/TextCharacters.cs:line 40
   at Avalonia.Media.TextFormatting.TextFormatterImpl.FetchTextRuns(ITextSource textSource, Int32 firstTextSourceIndex, TextLineBreak previousLineBreak, TextLineBreak& nextLineBreak) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs:line 286
   at Avalonia.Media.TextFormatting.TextFormatterImpl.FormatLine(ITextSource textSource, Int32 firstTextSourceIndex, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextFormatterImpl.cs:line 15
   at Avalonia.Media.TextFormatting.TextLayout.UpdateLayout() in /_/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs:line 225
   at Avalonia.Media.TextFormatting.TextLayout..ctor(String text, Typeface typeface, Double fontSize, IBrush foreground, TextAlignment textAlignment, TextWrapping textWrapping, TextTrimming textTrimming, TextDecorationCollection textDecorations, Double maxWidth, Double maxHeight, Double lineHeight, Int32 maxLines, IReadOnlyList`1 textStyleOverrides) in /_/src/Avalonia.Visuals/Media/TextFormatting/TextLayout.cs:line 71
   at Avalonia.Controls.TextBlock.CreateTextLayout(Size constraint, String text) in /_/src/Avalonia.Controls/TextBlock.cs:line 475
   at Avalonia.Controls.Primitives.AccessText.CreateTextLayout(Size constraint, String text) in /_/src/Avalonia.Controls/Primitives/AccessText.cs:line 156
   at Avalonia.Controls.TextBlock.get_TextLayout() in /_/src/Avalonia.Controls/TextBlock.cs:line 166
   at Avalonia.Controls.TextBlock.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/TextBlock.cs:line 521
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 46
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 39
   at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Presenters/ContentPresenter.cs:line 366
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 625
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 46
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 39
   at Avalonia.Controls.Border.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Border.cs:line 187
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 625
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Controls.StackPanel.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/StackPanel.cs:line 207
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Controls.Presenters.ItemVirtualizer.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Presenters/ItemVirtualizer.cs:line 221
   at Avalonia.Controls.Presenters.ItemsPresenter.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Presenters/ItemsPresenter.cs:line 139
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 46
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 39
   at Avalonia.Controls.Border.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Border.cs:line 187
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 625
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Controls.DockPanel.MeasureOverride(Size constraint) in /_/src/Avalonia.Controls/DockPanel.cs:line 112
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 46
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding, Thickness borderThickness) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 39
   at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Presenters/ContentPresenter.cs:line 366
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.LayoutHelper.MeasureChild(ILayoutable control, Size availableSize, Thickness padding) in /_/src/Avalonia.Layout/LayoutHelper.cs:line 46
   at Avalonia.Controls.Decorator.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Decorator.cs:line 54
   at Avalonia.Controls.Primitives.VisualLayerManager.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Primitives/VisualLayerManager.cs:line 133
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 625
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 559
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 625
   at Avalonia.Controls.Window.MeasureOverride(Size availableSize) in /_/src/Avalonia.Controls/Window.cs:line 916
   at Avalonia.Controls.WindowBase.MeasureCore(Size availableSize) in /_/src/Avalonia.Controls/WindowBase.cs:line 247
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in /_/src/Avalonia.Layout/Layoutable.cs:line 364
   at Avalonia.Layout.LayoutManager.Measure(ILayoutable control) in /_/src/Avalonia.Layout/LayoutManager.cs:line 297
   at Avalonia.Layout.LayoutManager.ExecuteInitialLayoutPass() in /_/src/Avalonia.Layout/LayoutManager.cs:line 184
   at Avalonia.Controls.Window.ShowCore(Window parent) in /_/src/Avalonia.Controls/Window.cs:line 693
   at Avalonia.Controls.Window.Show() in /_/src/Avalonia.Controls/Window.cs:line 631
   at LogicAnalyzer.App.OnFrameworkInitializationCompleted() in C:\Users\geniw\source\repos\LogicAnalyzer\LogicAnalyzer\App.axaml.cs:line 27
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at Avalonia.Threading.AvaloniaSynchronizationContext.<>c__DisplayClass5_0.<Post>b__0() in /_/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs:line 33
   at Avalonia.Threading.JobRunner.Job.Avalonia.Threading.JobRunner.IJob.Run() in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 181
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 37
   at Avalonia.X11.X11PlatformThreading.CheckSignaled() in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 164
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 244
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.cs:line 65
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 120
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 209
   at LogicAnalyzer.Program.Main(String[] args) in C:\Users\geniw\source\repos\LogicAnalyzer\LogicAnalyzer\Program.cs:line 14
zsh: IOT instruction (core dumped)  ./LogicAnalyzer

LogicAnalyzer software crashing on Win10

LogicAnalyzer software crashing on Win10.

Latest win64 version 2.1.0.0.

Steps to replicate:

  • Open Logic Analyzer software
  • Open serial device, it reports itself as LOGIC_ANALYZER_V1_0
  • Click Capture
  • Choose any settings, for example capture CH01, trigger CH01
  • Press Accept
  • it waits a few seconds then crash

Tried to open it from a command line to see some errors, but nothing is reported.

How can I debug it and see some errors please?

Not 100% sure if it's an app or my permissions in Windows or a space in a program path ("C:\Program Files\LogicAnalyzer").
Can someone please confirm if they have the same problem? If not I'll look elsewhere (Windows)

Window Height Not Adjustable

My maximum screen height is 768. The window height, defaults to 800 and can not be adjusted. Altering the "Height" in AppConfig.json:

"WindowSettings": {
"LogicAnalyzer.MainWindow": {
"Width": 1024.0,
"Height": 800.0,

has no effect, when the program is closed the height is reset to 800. Is there somewhere where I can tweak this?

Firmware version in software

In the software, the indicated firmware version of the RPI is not the correct one.
I updated version 1.1.0.0 but the version indicated is: "Current device: LOGIC_ANALYSER_V1_0"

Wish

It'll be very useful to use ADC to measure reference voltage of the level shifter
and use PWM or external DAC to setup reference voltage directly from the SW.
Or 2bits resistive DAC also do the job.

Getting a crash in osx-64

Hi
Thanks for this wonderful software. I've gone through the steps in previous discussions to run the Logic analyser s/w for osx-64, and have got it running on a Macbook with M2 silicon. There doesn't seem to be an option to run it without a trigger and I havn't got anything connected to the pico yet. Anyway, I can discover the pico and ask to collect some samples at 4Msps. However, after waiting for some seconds , it crashes saying Logic Analyser quit unexpectedly with the following first few lines of the dump. (there's many more!). Any thoughts?
Tony

Anonymous UUID: 89536F21-3E73-9092-67DE-18D78A68982B

Sleep/Wake UUID: BA24C633-4ED1-4FB3-A18A-A1EBCB8B9EAF

Time Awake Since Boot: 530000 seconds
Time Since Wake: 3088 seconds

System Integrity Protection: enabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x197234724 __pthread_kill + 8
1 libsystem_pthread.dylib 0x19726bc28 pthread_kill + 288
2 libsystem_c.dylib 0x197179ae8 abort + 180
3 libcoreclr.dylib 0x1049bdb34 PROCAbort + 60
4 libcoreclr.dylib 0x1049bda44 PROCEndProcess(void*, unsigned int, int) + 396
5 libcoreclr.dylib 0x104be921c UnwindManagedExceptionPass1(PAL_SEHException&, _CONTEXT*) + 968
6 libcoreclr.dylib 0x104be9264 DispatchManagedException(PAL_SEHException&, bool) + 68
7 libcoreclr.dylib 0x104b4ab5c IL_Throw(Object*) + 528
8 ??? 0x2830265c4 ???
9 ??? 0x282970098 ???
10 ??? 0x28296fa74 ???
11 ??? 0x282874064 ???
12 ??? 0x280db677c ???
13 ??? 0x280d85e3c ???
14 libcoreclr.dylib 0x104c72408 CallDescrWorkerInternal + 132
15 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852
16 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852
17 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852
18 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852
19 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852
20 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852
21 libcoreclr.dylib 0x104ae3a98 MethodDescCallSite::CallTargetWorker(unsigned long const*, unsigned long*, int) + 852

Option to make windows background solid instead of transparent

Currently the logic analyzer window is transparent which I personally find distracting and to sometimes result in a bad contrast depending on the order of the windows behind it . It can also be noticably resource intensive.

For this reason I'd much appreciate if it was possible to set the window to be made of solid colors.

No readme details of build tool chains/versions required to build code

I can find no info about what tool chains are required for both target and host code.

For the target I assume it is the Raspberry PI official CPP SDK.

But unsure what is needed for the Windows app.

An extra section in the readme file, or a separate text document with details would be helpful.

Also what toolchain versions.

Failure to compile dotnet to a single file

I have packaged logicanalyzer in AUR repository .
Now the compiled file is too fragmented, I tried to compile it into a single file and now the compilation reports an error.

PKGBUILD

# Maintainer: taotieren <[email protected]>

pkgname=logicanalyzer-git
pkgver=5.0.0.0.r1.g5f95102
pkgrel=2
epoch=
pkgdesc="24 channel, 100Msps logic analyzer hardware and software "
arch=("x86_64" "aarch64")
url="https://github.com/gusmanb/logicanalyzer"
license=('GLP-3.0')
provides=(${pkgname%-git} clcapture)
conflicts=(${pkgname%-git} clcapture)
replaces=()
depends=(dotnet-runtime
    ttf-dejavu)
makedepends=(git
    dotnet-sdk)
backup=()
options=('!strip')
install=
source=("${pkgname-git}::git+${url}.git")
sha256sums=('SKIP')
noextract=()

pkgver(){
    cd "${srcdir}/${pkgname-git}"
    git describe --long --tags | sed 's/^V//g;s/\([^-]*-g\)/r\1/;s/-/./g'
}

build() {
    cd "${srcdir}/${pkgname-git}/Software/LogicAnalyzer"

    if [ "$CARCH" == "aarch64" ]; then
    msg2 "build for arm64"
        dotnet publish  -r linux-arm64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true --self-contained true -o artifact
#         dotnet publish  -r linux-arm64 -c Release -o artifact
    else
    msg2 "build for x64"
        dotnet publish  -r linux-x64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true --self-contained true -o artifact
#         dotnet publish  -r linux-x64 -c Release -o artifact
    fi
}

package() {
    cd "${srcdir}/${pkgname-git}/Software/LogicAnalyzer/artifact/"

    install -Dm0755 CLCapture "${pkgdir}/usr/bin/clcapture"
#     install -Dm0644 CLCapture.dll "${pkgdir}/usr/share/${pkgname%-git}/CLCapture.dll"
    install -Dm0755 LogicAnalyzer "${pkgdir}/usr/bin/logicanalyzer"
#     install -Dm0644 LogicAnalyzer.dll "${pkgdir}/usr/share/${pkgname%-git}/LogicAnalyzer.dll"
#     install -Dm0644 LogicAnalyzer.runtimeconfig.json "${pkgdir}/usr/share/${pkgname%-git}/LogicAnalyzer.runtimeconfig.json"

#     install -dm0755 "${pkgdir}/usr/bin" \
#        install -dm0755 ${pkgdir}/usr/share/${pkgname%-git}
#
#     install -Dm0755 /dev/stdin  "${pkgdir}/usr/bin/clcapture" <<EOF
# export COREHOST_TRACE=1
#
# cd  /usr/share/logicanalyzer/
# LC_ALL=C ./CLCapture
# EOF
#
#     install -Dm0755 /dev/stdin  "${pkgdir}/usr/bin/${pkgname%-git}" <<EOF
# export COREHOST_TRACE=1
#
# cd /usr/share/logicanalyzer/
# LC_ALL=C ./LogicAnalyzer
# EOF

#     ln -sf /usr/share/${pkgname%-git}/LogicAnalyzer "${pkgdir}/usr/bin/${pkgname%-git}"

#     cp -rv * ${pkgdir}/usr/share/${pkgname%-git}

    install -Dm644 "$srcdir/logicanalyzer-git/Software/LogicAnalyzer/LogicAnalyzer/Assets/Logo40.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/${pkgname%-git}.png"
    install -Dm644 "$srcdir/logicanalyzer-git/Software/LogicAnalyzer/LogicAnalyzer/Assets/window.ico" "$pkgdir/usr/share/pixmaps/clcapture.ico"

    install -Dm0644 /dev/stdin "${pkgdir}/usr/share/applications/${pkgname%-git}.desktop" << EOF
[Desktop Entry]
Name=${pkgname%-git}
Name[zh_CN]=${pkgname%-git}
Comment=${pkgdesc}
#MimeType=application/x-${pkgname%-git};
Exec=${pkgname%-git}
Type=Application
Categories=Development;Tool;
Terminal=false
Icon=${pkgname%-git}
Version=1
EOF
    install -Dm0644 /dev/stdin "${pkgdir}/usr/share/applications/clcapture.desktop" << EOF
[Desktop Entry]
Name=clcapture
Name[zh_CN]=clcapture
Comment=Logic Analyzer Capture
#MimeType=application/x-clcapture;
Exec=clcapture
Type=Application
Categories=Development;Tool;
Terminal=false
Icon=clcapture.ico
Version=1
EOF
}

build log

........
  LogicAnalyzer -> /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/artifact/
  GenerateAvaloniaResourcesTask -> Root: /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer, 0 resources, Output:obj/Release/net7.0/linux-x64//Avalonia/resources
  GenerateAvaloniaResourcesTask -> Root: /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer, 0 resources, Output:obj/Release/net7.0/linux-x64//Avalonia/resources
  GenerateAvaloniaResourcesTask -> Root: /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/I2CProtocolAnalyzer, 0 resources, Output:obj/Release/net7.0/linux-x64//Avalonia/resources
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(77,60): warning CS8605: Unboxing a possibly null value. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(82,24): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(82,64): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(84,38): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(84,38): warning CS8604: Possible null reference argument for parameter 's' in 'int int.Parse(string s)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(85,29): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(85,29): warning CS8600: Converting null literal or possible null value to non-nullable type. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(86,44): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialAnalyzer.cs(86,44): warning CS8604: Possible null reference argument for parameter 's' in 'double double.Parse(string s)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(84,33): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(84,33): warning CS8600: Converting null literal or possible null value to non-nullable type. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(85,34): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(85,34): warning CS8604: Possible null reference argument for parameter 's' in 'int int.Parse(string s)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(86,34): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(86,34): warning CS8604: Possible null reference argument for parameter 's' in 'int int.Parse(string s)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(93,54): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(211,31): warning CS8602: Dereference of a possibly null reference. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(352,70): warning CS8604: Possible null reference argument for parameter 'source' in 'bool Enumerable.Contains<string?>(IEnumerable<string?> source, string? value)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(357,68): warning CS8604: Possible null reference argument for parameter 'source' in 'bool Enumerable.Contains<string?>(IEnumerable<string?> source, string? value)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIAnalyzer.cs(362,68): warning CS8604: Possible null reference argument for parameter 'source' in 'bool Enumerable.Contains<string?>(IEnumerable<string?> source, string? value)'. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
  I2CProtocolAnalyzer -> /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/I2CProtocolAnalyzer/bin/Release/net7.0/linux-x64/I2CProtocolAnalyzer.dll
/usr/share/dotnet/sdk/7.0.110/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets(94,5): error NETSDK1099: Publishing to a single-file is only supported for executable applications. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/I2CProtocolAnalyzer/I2CProtocolAnalyzer.csproj]
  SerialProtocolAnalyzer -> /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/bin/Release/net7.0/linux-x64/SerialProtocolAnalyzer.dll
/usr/share/dotnet/sdk/7.0.110/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets(94,5): error NETSDK1099: Publishing to a single-file is only supported for executable applications. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SerialProtocolAnalyzer/SerialProtocolAnalyzer.csproj]
  SPIProtocolAnalyzer -> /home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/bin/Release/net7.0/linux-x64/SPIProtocolAnalyzer.dll
/usr/share/dotnet/sdk/7.0.110/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets(94,5): error NETSDK1099: Publishing to a single-file is only supported for executable applications. [/home/taotieren/git_clone/aur/logicanalyzer-git/src/logicanalyzer-git/Software/LogicAnalyzer/SPIProtocolAnalyzer/SPIProtocolAnalyzer.csproj]
==> ERROR: A failure occurred in build().
    Aborting...
 exa -Tla src/logicanalyzer-git/Software/LogicAnalyzer/artifact/
drwxr-xr-x    - taotieren 30 Aug 10:10 src/logicanalyzer-git/Software/LogicAnalyzer/artifact
.rwxr-xr-x  14M taotieren 30 Aug 10:10 ├── CLCapture
.rw-r--r--  13k taotieren 30 Aug 10:10 ├── CLCapture.pdb
.rwxr--r-- 1.6M taotieren 12 Aug  2022 ├── libHarfBuzzSharp.so
.rwxr--r-- 683k taotieren 18 Feb  2022 ├── libonigwrap.so
.rwxr--r-- 9.2M taotieren 12 Aug  2022 ├── libSkiaSharp.so
.rwxr--r--  18k taotieren 23 Oct  2021 ├── libSystem.IO.Ports.Native.so
.rwxr-xr-x  51M taotieren 30 Aug 10:10 ├── LogicAnalyzer
.rw-r--r--  73k taotieren 30 Aug 10:10 ├── LogicAnalyzer.pdb
.rw-r--r--  17k taotieren 30 Aug 10:10 ├── SharedDriver.pdb
.rw-r--r--  16k taotieren 30 Aug 10:10 └── SignalDescriptionLanguage.pdb

Some questions about samples deep

Sorry, first of all, please forgive me for asking some novice questions.
What bottleneck limits the sample depth? Is it CPU computing power, memory size, or something else?

Cannot find my device

Hello,
My device is RPi-PICO which was bought in 2020. I burned the firmware with the version of 5.0.0(Firmware-LogicAnalyzer-5.0.0.0-PICO.uf2). But when i click the program in windows with the device connected to my pc and a terminal flashed and exited. I tried to exec it in terminal and it showed ERROR(S): No verb selected.

image

And the device in Device Manager shows RESET,which needs related drivers.
image

What can i do to solve it?
Thank you very much!

missing executable permission on Linux-x64 binaries

Hi,

thanks for providing this repo. I am currently trying to install it on my Linux system and stumbled over one problem:
the main executables in the zipped releases are missing the executable-bit.

Doing a chmod +x linux-64/LogicAnalyzer solves the problem (same for the cli-interface). After that, it starts :-)

Bernhard

Ability to delete useless samples.

In the logic analyser if would be very useful if we could select a time range where we don't care about the signal and hit delete to remove it. It way much easier than scrolling when event are far apart.

Also, can you increase the minimum zoom level (even with 200 samples in view, it's still too much zoomed IMHO, I'd like to see more signals)

Thanks!

LogicAnalyzer.exe does not show any channels

Hi,

I downloaded and started the LogicAnalyzer.exe in Win10 and I'm able to connect to the Pico. The communication seems to work, since the Pico starts to blink when I hit accept in the capture settings and stops blinking when I hit abort.

Unfortunately the channels pane remains black all the time and I don't see any channels or captures.

What am I doing wrong?

About the host computer software

This is a great project, but I have a question why the accept and cancel buttons on the configure capture page of my PC software disappeared, I don't know what happened, hope to be able to help, thank you very much

Cross Platform Software

First of all, cool work!

You said you might make a cross platform UI if you get enough requests. I haven't seen such a request to +1 it yet, so I'll start a first one.

Personally I'll receive my Pico in the next couple days and I want to try this out immediately, even if it's on Windows only. I'd still prefer a Linux version.

Thanks for the good work!

About the host computer software

This is a great project, but I have a question why the accept and cancel buttons on the configure capture page of my PC software disappeared, I don't know what happened, hope to be able to help, thank you very much

LevelShifter capacitors details

Hi,

I'm having trouble finding the specific capacitance values for the 12 capacitors on the level shifter.
What should I consider when picking out those when I want to build a level shifter myself.

Enclosure issue

The case opening for the micro USB socket does not fit on the side.
The Raspberry Pico has the socket on the front side exactly in the middle.

Sigrok driver

Would be desirable to create a Sigrok driver as it's a widely used software to handle logic analyzers.

Daisy chaining RP2040 Zero

Hi there, it's a bit unclear what pins one would use to daisy chain RP2040 ZERO.
Thank you and good health!

Show basic error information when capture start fails and make capture requirements more clear

Currently, the message is very vague and just says that there was an error. Additionally, the requirements for a successful capture should probably be shown in the README or somewhere more obvious. I had to dig through the source code to realize that the reason it wasn't capturing was because I set pre-samples to zero, thinking that I just wanted to maximize the number of samples after the trigger that it captured. I actually wound up reinstalling the firmware on the Pi Pico, redownloading the application from GitHub, rebooting both my machine and the Pi Pico several times, and was about to run a live linux distro until I saw that it was just because pre-samples has to be at least 2.

How to stop capturing?

Hi, brother
When I am capturing, I want to stop capturing; But I don't know how to stop scanning, only power off and restart.
Adding start and stop buttons to the software is a good choice.

Pico-W support

The current code hard codes the LED pin.
Would it be possible to add a build for the Pico-W, as the LED uses an IO pin on the Wifi chip.
Would not want/expect Wifi support, but would be useful to have a Pico-W build image for those of us who have spare Pico-W's.

New features for the "level adapter" board: more logic levels 2.5, 1.8 and eventually reversed as signal generator..

Hello, that's a very nice project, this one!
you did a very clever usage of that "small" FSM present in these PIO modules.. didn't know of them, but very powerful, this way.
i'll not chime about the high level software, as it's open source and anybody can adapt to his best pet frontend! :-)

i'm more interested about the board for adapting different logic levels. i see the TXU0104 is pretty cool too, because it can manage also "external levels" from 1.1 to 5.5v so i suppose that many would be interested in a logic analyzer for also the "quite common" logic voltage of 1.8v and 2.5v. some simple extension would give this adapter board a quite more "exclusive" market, imho.

on the other hand, reading the DS of this TXU0104, it looks like it could also work in reverse mode, so you could use it also to have that RP2040 work as a simple signal generator, for some of its pins.
don't know if the state machine of these PIO units can be helpful for this task too, but in a general way, a device that can do both input and output could be pretty useful, for the same BOM or so.

that's all, sorry for the "noise", just my two cents

that's a good project already, anyway!

Crash when exporting data, Windows

obraz

The program crashes whenever I try to export the data to a .lac or .csv file. I tested that on v2.0.0.0, v2.1.0.1 and v3.5.0.1 (latest).

Capturing data works fine, but I can't export it for further analysis in any way. How can I debug that crash?

False Positives?

After attempting to run on a machine with Norton, both the .exe and a bunch of the .dll's got flagged and removed as part of remidiation.

Inconsistency in channel naming

The first channel is called "Channel 1" in most of the places in the Logic Analyzer application. In the information box on the right bottom it is indicated as Channel 0.
logic_analyzer

Crash when exporting data (Linux) - Index was outside the bounds of the array.

Hello,

I am using v2.0.1.0 under Linux, the capture and save are fine, but exporting the data results in an application crash with the following log:

Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at LogicAnalyzer.MainWindow.<MnuExport_Click>b__9_0(Int32 c) in C:\Users\geniw\source\repos\LogicAnalyzer\LogicAnalyzer\MainWindow.axaml.cs:line 72
   at System.Linq.Enumerable.SelectArrayIterator`2.ToArray()
   at LogicAnalyzer.MainWindow.MnuExport_Click(Object sender, RoutedEventArgs e) in C:\Users\geniw\source\repos\LogicAnalyzer\LogicAnalyzer\MainWindow.axaml.cs:line 72
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at Avalonia.Threading.AvaloniaSynchronizationContext.<>c__DisplayClass5_0.<Post>b__0() in /_/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs:line 33
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 37
   at Avalonia.X11.X11PlatformThreading.CheckSignaled() in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 164
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 244
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.cs:line 65
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 120
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 209
   at LogicAnalyzer.Program.Main(String[] args) in C:\Users\geniw\source\repos\LogicAnalyzer\LogicAnalyzer\Program.cs:line 14
Aborted

The file is 0 bytes

Capture parameters:


{
   "Frequency":4000000,
   "PreTriggerSamples":5,
   "PostTriggerSamples":1024,
   "CaptureChannels":[
      20,
      21,
      22,
      23
   ],
   "TriggerType":0,
   "TriggerChannel":22,
   "TriggerInverted":true,
   "TriggerBitCount":0,
   "TriggerPattern":0
}

hope to add analog channels

Previously I was using analog channels on pulseview as a sample oscilloscope. I would like to continue to get this feature on LogicAnalyzer. Will it be added in the near future? Thx.

I have some questions about the integrated PCB I will make

I am trying to integrate rp2040 on PCB to complete a more integrated product.But I have a question. I see that your PCB wiring is treated with equal length, but the IO wiring on the rp2040 development board is not of equal length. Do I need to treat the whole process of equal length when I make an integrated PCB?

Protocol Analyzers not found on Case Sensitive Filesystems (Linux)

Version: 5.0.0.0
OS: Linux

Protocol analyzers reports "None" when directory is called Analyzers.
Protocol analyzers reports <list> when directory is called analyzers.

I would propose looking for Analyzers instead of the lowercase version. as that appears in the release zip files. For non-case sensitive file systems (Windows and most/standard OS X) it should continue to work.

Workaround: Manually rename directory.

Resize Level Shifter PCB?

Not an issue, just an idea:

Can you resize the Level Shifter PCB so that it's the same size as the main Logic Analyzer PCB and add holes to the four corners to align with the holes in the Analyzer PCB?

The idea is to mount the level shifter PCB upside-down on top of, or underneath of, the main Logic Analyzer PCB to keep the same footprint in the X and Y directions, and it would just end up being slightly taller in the Z direction.

I really don't know how to use PCB design software (i.e. KiCad) so I'm lost when trying to do it myself.

Some more suggestions

Hi,

some more suggestions:

  • add a help-menu with a link to the wiki and an "About-entry" with the current version-number/build number
  • remember the IP-address of the last network-device
  • add D/C channel to SPI analyzer

The first one is "nice to have", the second one is useful. I think most users will typically have one device only. The third one would help in analyzing the 4-wire protocol (most SPI stuff I am using has this data/command line).

(as you can see: users always want more features ;-)

Version 3.5.0.0 only capturing a few samples on Linux

Hi,
it seems that Logicanalyzer 3.5.0.0 on Linux captures without returning any samples if the post-samples
exceeds 4339. The pre-samples range is also limited. The allowed ranges for pre-samples is [2, 29] and
for post-samples it is [512, 4339].

During capture the led is slowly blinking and after the fulfilled trig condition (falling edge)
the led stops blinking signalling a capture. But, no capture is shown and the "Abort" button
is still the only active button. Clicking "Abort" prints the following message to the console:
"
The port is closed. - at System.IO.Ports.SerialStream.Read(Byte[] array, Int32 offset, Int32 count, Int32 timeout)
at System.IO.BinaryReader.InternalRead(Int32 numBytes)
at System.IO.BinaryReader.ReadUInt16()
at SharedDriver.LogicAnalyzerDriver.ReadCapture(Int32 Samples, Byte Mode) in C:\Users\geniw\source\repos\LogicAnalyzer\SharedDriver\LogicAnalyzerDriver.cs:line 344
"

Tried with 8, 16 and 24 modes without success.
It takes about 4-5 seconds from when the led stops blinking to the samples are shown
in the LogicAnalyzer (when the pre- and post-samples are in the "allowed" range).

ClCapture fails with error message:
"
ClCapture capture /dev/ttyACM2 1000000 1 20 1014 TriggerType:Edge,Channel:1,Value:0 out-capture.csv
CLCapture 1.0.0
Copyright (C) 2023 CLCapture

ERROR(S):
A value not bound to option name is defined with a bad format.
A required value not bound to option name is missing.

--help Display this help screen.
---- rest of output deleted ----
"
Should ClCapture version be 1.0.0?

Both LogicAnalyzer and ClCapture works when reverting to the previous version (2.0.0.1).

This is on Ubuntu 22.04 with a standard Pico with no WiFi, using Firmware-LogicAnalyzer-3.5.0.0.uf2.

I would be happy to do further tests if needed.
By the way, the extended capture is brilliant!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.