프로그램 Port List  ( C# / WPF / .NET Framework 4.8.1 )

Serial Port 목록을 보여주는 단순한 프로그램

작업관리자 띄우기가 귀찮아 직접 만듬.

 

[ v ] Auto  : 체크시 2초마다 자동으로 COM 포트 목록 업데이트

[ v ] Top Most : 프로그램을 최상위 화면으로 고정

 

 

PortList.exe
0.42MB

 

라이센스 x ( 마구 가져다 써도 됨. )

MD5 : cb6850e842a06ca764e11081fb6f5be2

 

※ MD5 확인 방법 (윈도우 only)

명령 프롬프트에서 실행
> Get-FileHash -Path PortList.exe -Algorithm md5
Algorithm       Hash                                
---------       ----                                
MD5             CB6850E842A06CA764E11081FB6F5BE2  

 

또는 

명령 프롬프트에서 실행
> certutil -hashfile PortList.exe md5
MD5의 PortList.exe 해시:
cb6850e842a06ca764e11081fb6f5be2

 

'Programming > WPF' 카테고리의 다른 글

WPF, Image Control, bitmap 수정 및 업데이트하기  (0) 2023.10.17

 

# xaml 

    <Grid Background="Black">
        <Image x:Name="DrawCanvas" Width="100" Height="100"/>
    </Grid>

 

# 비트맵 변경

        public void init(int w, int h)
        {
            DrawCanvas.Width = w;
            DrawCanvas.Height = h;
        }


        public void DrawColorCanvas2(int x, int y, int color)
        {
            int bitmapWidth = (int)DrawCanvas.Width;
            int bitmapHeight = (int)DrawCanvas.Height;

            if (_writeableBitmap == null)
            {
                _writeableBitmap = new WriteableBitmap(bitmapWidth, bitmapHeight, 96, 96, PixelFormats.Bgra32, null);

                int length = _writeableBitmap.BackBufferStride * bitmapHeight;
                byte[] buffer = new byte[length];

                _writeableBitmap.WritePixels(new Int32Rect(0, 0, (int)_writeableBitmap.Width, (int)_writeableBitmap.Height), buffer, _writeableBitmap.BackBufferStride, 0);
                DrawCanvas.Source = _writeableBitmap;
            }

            try
            {
                // Reserve the back buffer for updates.
                _writeableBitmap.Lock();

                // Compute the pixel's color.
                int color_data = 0;
                color_data |= color << 0;   // B
                color_data |= color << 8;   // G
                color_data |= color << 16;  // R
                color_data |= 0xff << 24;   // A 

                unsafe
                {
                    int length = _writeableBitmap.BackBufferStride * bitmapHeight;

                    //for (int y = 0; y < bitmapHeight; y++)
                    {
                        //for (int x = 0; x < bitmapWidth; x++)
                        {
                            int i = (y * _writeableBitmap.BackBufferStride) + (x * 4);

                            IntPtr pBackBuffer = _writeableBitmap.BackBuffer;

                            // Find the address of the pixel to draw.
                            pBackBuffer += y * _writeableBitmap.BackBufferStride;
                            pBackBuffer += x * 4;

                            // Assign the color data to the pixel.
                            *((int*)pBackBuffer) = color_data;
                        }
                    }
                }

                // Specify the area of the bitmap that changed.
                _writeableBitmap.AddDirtyRect(new Int32Rect(x, y, 1, 1));
            }
            finally
            {
                // Release the back buffer and make it available for display.
                _writeableBitmap.Unlock();
            }
        }

 

# 테스트

        public void Test()
        {
            int bitmapWidth = (int)DrawCanvas.Width;
            int bitmapHeight = (int)DrawCanvas.Height;

            for (int y = 0; y < bitmapHeight; y++)
            {
                for (int x = 0; x < bitmapWidth; x++)
                {
                    DrawColorCanvas2(x, y, 0, false);
                }
            }

            // 화면 업데이트
            System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(
                            System.Windows.Threading.DispatcherPriority.Background
                           , new System.Threading.ThreadStart(delegate { }));
        }

 

'Programming > WPF' 카테고리의 다른 글

[무료] Serial Port List 프로그램 (windows)  (0) 2023.10.26

기본값이 denver2 core 2개가 isolation 되어있다.

sudo vi /boot/extlinux/extlinux.conf

수정 부분 : 
isolcpus=1-2 부분을 원하는 값으로 수정

==> isolcpus=1-2,5

 

참고: tx2 cpu 리스트

CPU1 - Cortex®-A57    (cpu id 0)
CPU2 - Nvidia Denver2 (cpu id 1)
CPU3 - Nvidia Denver2 (cpu id 2)
CPU4 - Cortex®-A57    (cpu id 3)
CPU5 - Cortex®-A57    (cpu id 4)
CPU6 - Cortex®-A57    (cpu id 5)

 

아래 에러 발생시

lopen(): error loading libfuse.so.2

 

libfuse2 설치

$ sudo apt install libfuse2

 

이상 끝.

 

 

# UNIX Timestamp 구하기

SELECT UNIX_TIMESTAMP()
==>  필드의 데이터 타입은 int 사용

 

# UNIX Timestamp 를 DATETIME 타입으로 변한

SELECT FROM_UNIXTIME( UNIX_TIMESTAMP() )

 

 

'Programming > SQL' 카테고리의 다른 글

[MariaDB] Tip - Binary Type 쿼리  (0) 2022.06.15

# Binary Type 쿼리하기

SELECT HEX( SRRIAL_NO ) FROM xxxxx

WHERE SERIAL_NO = x'012345ABCDEF'

 

'Programming > SQL' 카테고리의 다른 글

[MariaDB] Tip - UNIX Timestamp 사용하기  (0) 2022.06.15

https://www.wenyanet.com/opensource/ko/603e9447a7f61408ee3b9168.html

 

많은 기능을 구현하는 Actix 2.x REST 애플리케이션의 예 - wenyanet

Rust / Actix 예제 Rust 언어를 사용하는 Actix 2.0 REST 서버. 자극 Actix Web은 Rust에서 웹 애플리케이션을 구축하기위한 빠르고 강력한 웹 프레임 워크입니다. 이 프로젝트는 Actix의 성능 이점을 유지하면

www.wenyanet.com

https://actix.rs/

 

Actix Web | A powerful, pragmatic, and extremely fast web framework for Rust.

Request Routing The built-in Actix Web request router can be used with or without macros attached to handlers, and always provides flexible and composable methods of creating routing tables. Includes support for matching dynamic path segments, path prefix

actix.rs

 

'Programming > Rust' 카테고리의 다른 글

Rust 설치  (0) 2022.03.05

curl https://sh.rustup.rs -sSf | sh

source ~/.cargo/env
rustc --version

'Programming > Rust' 카테고리의 다른 글

rust actix example  (0) 2022.03.07

 

## RAM 구분

 2G : D9WHZ
 4G : D9WHV
 8G : D9ZCL

 

## ubuntu Server 20.04.4 LTS ( 64bit OS )

https://ubuntu.com/download/raspberry-pi 

 

Install Ubuntu on a Raspberry Pi | Ubuntu

Ubuntu is an open-source operating system for cross platform development, there's no better place to get started than with Ubuntu on a Raspberry Pi.

ubuntu.com

 

## 라즈베리안 ( 64bit OS )

 https://downloads.raspberrypi.org/raspios_lite_arm64/images/
 https://downloads.raspberrypi.org/raspios_arm64/images/
 안정화 버전 : 2022년 01월 28일 버전

 

## 기본 계정 및 암호

 라즈베리안 : pi / raspberry
 ubuntu : ubuntu / ubuntu 

 

## exFAT 인식 시키기

 sudo apt-get install exfat-fuse
 sudo apt-get install exfat-utils

 

## Go 언어 설치 ( 라즈베리안 64bit )

 wget https://golang.org/dl/go1.17.3.linux-arm64.tar.gz
 tar -C /usr/local -xzf go1.17.3.linux-arm64.tar.gz


 vi ~/.bashrc
 export PATH=$PATH:/usr/local/go/bin

 

## ArozOS 설치

https://github.com/tobychui/arozos

 

- 수동 build

 git clone https://github.com/tobychui/arozos.git
 cd ./arozos/src
 go build
 ./arozos

 

- 자동 설치

 wget https://raw.githubusercontent.com/tobychui/arozos/master/installer/install_for_pi.sh
 sudo chmod 775 ./install_for_pi.sh
 ./install_for_pi.sh

 

 

 

NTFS 마운트하기

[root@plus-pogo dev]# pacman -S ntfs-3g
resolving dependencies...
looking for inter-conflicts...

Packages (1): ntfs-3g-2013.1.13-4

Total Download Size:    0.43 MiB
Total Installed Size:   1.47 MiB
Net Upgrade Size:       0.16 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages ...
 ntfs-3g-2013.1.13-4-arm  445.1 KiB   246K/s 00:02 [######################] 100%
(1/1) checking keys in keyring                     [######################] 100%
(1/1) checking package integrity                   [######################] 100%
(1/1) loading package files                        [######################] 100%
(1/1) checking for file conflicts                  [######################] 100%
(1/1) checking available disk space                [######################] 100%
(1/1) upgrading ntfs-3g                            [######################] 100%

 

8G짜리 USB 메모리를 Windows 7 에서 NTFS로 포맷하고

포고에서 꽂으니 아래처럼 메세지를 보여준다..

그러나... 다시 윈도우에서 인식 못하는 경우가 종종 발생한다.. ㅜㅜ

 

[root@plus-pogo mnt]# mount -t ntfs-3g /dev/sdb1 /mnt/ntfs/
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.

또는, 간단히

[root@plus-pogo mnt]# ntfs-3g /dev/sdb1 /mnt/ntfs/
으로 마운트시킨다.

 

테스트 결과 :

윈도우에서 스로리지를 분리할 경우 꼭 "하드웨어 안전하게 제거 및 미디어 꺼내기" 를 통해 스토리지를 분리해주어야 포고와 윈도우에서 정상적으로 사용가능하다.

참고 사이트 : https://wiki.archlinux.org/index.php/NTFS-3G#Installation

 

 

참고 :

스토리지 연결후 확인 방법

[root@plus-pogo mnt]# fdisk -l

Disk /dev/sda: 15.8 GB, 15805186048 bytes, 30869504 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x283274c5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63    30860864    15430401   83  Linux

Disk /dev/sdb: 8019 MB, 8019509248 bytes, 15663104 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x22a437ac

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63    15647309     7823623+   7  HPFS/NTFS/exFAT
[root@plus-pogo mnt]#

마운트 후에

[root@plus-pogo mnt]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  1.4G   13G  10% /
devtmpfs         60M     0   60M   0% /dev
tmpfs            61M     0   61M   0% /dev/shm
tmpfs            61M  284K   60M   1% /run
tmpfs            61M     0   61M   0% /sys/fs/cgroup
tmpfs            61M     0   61M   0% /tmp
/dev/sdb1       7.5G   63M  7.5G   1% /mnt/ntfs
[root@plus-pogo mnt]#

 

 

+ Recent posts