본문 바로가기

분류 전체보기158

RaspberryPi- 하드웨어 정보 얻기 CPU 온도 알아보기 CPU의 온도를 다음과 같은 명령어로 알아볼 수 있습니다. vcgencmd measure_temp 그러면 다음과 같은 내용이 화면에 보입니다. temp=47.2'C 여기서 숫자만 추출해서 기록하고 싶으면 다음과 같은 shell 명령어를 만들면 됩니다. cgencmd measure_temp | grep -o '[0-9]*\.[0-9]*' 그러면 온도 부분의 숫자만 출력됩니다. CPU 사용률 CPU의 사용률을 구하려면 먼저 다음의 파일을 설치해야 합니다. sudo apt-get install sysstat -y 그리고 다음과 같이 실행하면 CPU의 전반적인 상태를 보여줍니다. mpstat Linux 5.10.52-v7+ (pi3-27) 2021년 08월 10일 _armv7l_ (4 CP.. 2021. 8. 10.
RaspberryPi- booting하고 자동으로 프로그램 시작하기 부팅과 동시에 프로그램을 실행하고 싶으면 아래의 파일을 열고 수정합니다. sudo nano /etc/profile.d/bash_completion.sh 파일의 맨 아래에 원하는 프로그램명을 추가합니다. 이때 맨 뒤에 '&'를 추가해서 백그라운드로 동작하도록 유도합니다. /home/pi/dasp/mono dasp.exe & 2021. 8. 10.
Linux- ssh의 root 접근 ssh를 root 권한으로 접근하려면 아래와 같이 파일을 열고 수정하면 됩니다. sudo nano /etc/ssh/sshd_config #PermitRootLogin without-password PermitRootLogin yes 2021. 8. 10.
RaspberryPi- 부팅 화면 조정하기 Raspberry Pi의 부팅 화면의 표시를 조정 가능합니다. 다음의 블로그를 참조하였습니다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=asdf2017&logNo=221312591395 부팅 레인보우 지우기 부팅에서 화면에 보이는 레인보우 형태의 표시를 지웁니다. 다음과 같이 파일을 엽니다. sudo nano /boot/config.txt 그리고 다음의 내용을 추가합니다. disable_splash=1 avoid_warnings=1 부팅 로고 변경 부팅 화면에 보이는 로고를 변경할 수 있습니다. 다음 경로에 파일을 원하는 내용으로 그림을 수정하고 다시 기록하면 됩니다. WinScp.exe와 같은 프로그램을 사용해서 Windo.. 2021. 8. 10.
Linux- dhcp의 고정 IP 할당 RaspberryPi- 네트워크에서 고정 IP로 할당하고 싶을 때 다음과 같은 파일로 접근합니다. sudo nano /etc/dhcpcd.conf 그리고 아래와 같이 원하는 IP 주소를 할당합니다. interface eth0 static ip_address=192.168.0.30 static netmask=255.255.255.0 static routers=192.168.0.1 static domain_name_servers=168.126.63.1 interface wlan0 static ip_address=192.168.0.40 static netmask=255.255.255.0 static routers=192.168.0.1 static domain_name_servers=168.126.63.1 2021. 8. 10.
RaspberryPi- IPv6 사용하지 않기 Raspberry Pi에서 IPv6를 사용하지 않도록 조정이 가능합니다. 다음과 같이 파일을 엽니다. sudo nano /boot/cmdline.txt 한 줄로 작성된 내용에 다음을 추가합니다. ipv6.disable=1 2021. 8. 10.
유용한 File 접근 c#에서는 편리하게 파일에 접근하는 방법을 제공합니다. 이 방법은 MONO를 사용해서 linux에서도 동일한 결과를 얻어 줍니다. 현재 디렉터리 System.IO.Directory.GetCurrentDirectory() 파일 존재 여부 if(File.Exists(this.scene_file) == true){...} 경로와 경로의 합성 string db_dir = Path.Combine(System.IO.Directory.GetCurrentDirectory(),"DB"); 파일명. 확장자 추출 string filepath = @"D:\다운로드\POP\Survive You.mp3"; string file_fullname = System.IO.Path.GetFileName(filepath); // "Surv.. 2021. 8. 9.
float[]를 double[]로 변화 신호처리를 하는 과정에서는 형 변화를 많이 하며, 배열로 된 다수의 데이터를 for문을 사용하지 않고 한꺼번에 변환하도록 간결한 코드 방법이 편리할 때가 있습니다. lamda 식을 이용해서 float []을 double []로 변환하는 방법은 다음과 같습니다. double[] d = Array.ConvertAll(data.ToArray(),x => (double)x); 물론 원하는 형식을 사용해서 변환이 모두 가능합니다. 2021. 8. 9.
배열과 리스트의 변환 C#의 유용함 중에 하나는 리스트일 것입니다. 여러 가지 유용한 데이터 형태를 마음대로 사용수 있기 때문이죠. 물론 python에 비하면... C#의 배열을 리스트로 변환하거나 그 반대로 변환하는 방법을 알아보겠습니다. 배열을 리스트로 변환하려면 아래와 같이 하면 됩니다. public List testList; public int[] testArray; testList = new List(testArray); 반대로 리스트를 배열로 변환하려면 다음과 같이 하면 됩니다.' public List testList; public int[] testArray; testArray = testList.ToArray(); 2021. 8. 9.
쓰레드 동작중에 Invoke로 문자 쓰기 Thread로 동작중에 화면에 내용을 표시하고 싶을 때가 있습니다. 그런데 Thread에서 폼으로 접근하는 것이 잘 되지 않습니다. 해결 방법으로 Invoke를 사용합니다. 이 글은 Invoke delegate를 이용해서 lcdlabel에 글자를 쓰는 방법입니다. Invoke((MethodInvoker)delegate { this.lcdLabel.Text} ); 아래와 같이 사용해도 됩니다. private void WriteText(Control ctrl,string s) { if(ctrl.InvokeRequired) { ctrl.Invoke(_TextWriter,ctrl,s); } else { ctrl.Text = s; } } 이 방법은 Text를 포함하는 모든 도구에 사용이 가능합니다. 2021. 8. 9.
다른 폼으로 메시지 전송(3) 폼 간에 메시지를 전송할 수 있는 방법인데, 전송 메시지에 담기는 내용을 사용자가 마음대로 결정할 수 있어 매우 유연한 방법입니다. 즉 데리게이터로 전송하고 자하는 메시지의 객체 형태를 변경하여 사용하면 됩니다. 전송하는 폼의 코드입니다. public delegate void delEvent(string str); public event delEvent eventSender; //- 버튼이 눌리면 메시지를 전송한다. private void btnX_Click(object sender,EventArgs e) { if(this.eventSender != null){ string msg = string.Format("${0:00},{1}",this.inportNumber,"EQ_SELECT"); this.ev.. 2021. 8. 9.
다른 폼으로 메시지 전송(2) 다른 폼으로 문장으로 메시지를 전송하는 방법입니다. 그런데 이 방법은 다소 볼 안전합니다. 전송할 폼의 코드 내용은 다음과 같습니다. //- userControl class public partial class UserControl1 : UserControl{ //- property로 변경 내용 (event)이 있음을 알림 public event PropertyChangedEventHandler PropertyChanged; //- 변경될 내용이 기록되는 멤버 private string str_msg; public UserControl1(){ InitializeComponent(); } //- 변경 내용이 전달되는 함수 정의 public string Message{ get { return str_msg;.. 2021. 8. 9.
다른 폼으로 메시지 전송(1) 현재 사용 중인 폼에서 다른 폼으로 메시지를 전송해서, 다른 폼이 알아서 일을 처리하도록 유도할 수 있습니다. 이번 예에서는 동작 중인 폼에서 메인 폼으로 이벤트를 전송하고, 메인 폼이 이를 반영하는 내용을 작성해 보겠습니다. 먼저 하나의 폼(userControlX)을 작성하고 다음의 코드를 입력합니다. //- 이벤트 헨들러 정의 public event EventHandler btn_event; //- 초기화를 위해 객체 상성자에 이벤트 설정 public userControlX(){ btn.Click += btn_envet; } //- 동작 함수내에 이벤트 발생시 내용을 전달 public fuc(object sender, EventArgs e){ if(event != null){ btn_event(sen.. 2021. 8. 9.
richTextBox에 Console출력하기 C# GUI를 사용하다 보면, 가끔 Console의 내용을 화면에 보여주고 싶습니다. 이때 richTextBox를 이용해서 GUI 화면에 출력이 가능합니다. 다음 내용을 참조했습니다. https://stackoverflow.com/questions/472282/show-console-in-windows-application/15079092#15079092 https://stackoverflow.com/questions/4362111/how-do-i-show-a-console-output-window-in-a-forms-application 먼저 클래스를 추가합니다. public delegate void StringArgReturningVoidDelegate(string text); public class.. 2021. 8. 9.
버튼 배열을 만들고, 마우스 클릭 이벤트 설정하기 C#에서 여러 개의 버튼을 만들고, 마우스로 클릭하는 이벤트 기능을 사용할 때가 많습니다. 예를 들어 4x3개로 배열되는 키 버튼을 만든다면, 이를 버튼 배열로 만드는 것이 편리할 것입니다. 다음과 같은 방법을 사용하면 편리합니다. 이 예는 4개의 버튼을 생성하는 방법을 보여주고 있습니다. 우선 배열로 버튼을 정의합니다. private Button[] btn = new Button[4]; 다음과 같이 버튼의 객체를 생성하고 폼에 등록합니다. 그리고 위치를 결정하고, 마우스 이벤트를 연결합니다. 이때 index라는 별도의 변수를 사용하는 것이 핵심입니다. private void Form1_Load(object sender,EventArgs e) { for(int i =0;i< btn.Length;i++){.. 2021. 8. 9.
DaspX의 기능 DaspX는 전문가뿐만이 아니라 일반인도 쉽게 오디오 믹서를 다룰 수 있도록 GUI 기반의 제어 방식을 사용합니다. 또한 여러 오디오 운영환경에 따라 적용이 가능하도록 여러 편리 장치를 제공합니다. DaspX의 특징은 다음과 같습니다. 편리한 GUI를 제공합니다. 여러 운영환경 별로 적합한 DAP 내용을 기록하고, 호출이 가능합니다. 입출력 포트를 원하는 그룹으로 묶어서 한꺼번에 동시 조작이 가능합니다. 입출력 포트의 이퀄라이저 등을 그룹으로 묶어서 한꺼번에 동시 변경이 가능합니다. 외부에서 윈격 제어가 가능합니다. DC 전원으로 동작이 가능합니다. DaspX는 다음과 같은 하드웨어를 기반으로 개발되었습니다. DSP : ADAU1442 Codec : AD1938 Hardware Controller : a.. 2021. 8. 9.
Linux에서 MONO설치-시작 리눅스에서 C# 사용 MONO는 Visual Studio 또는 MonoDevekop에서 생성된 C# 기반의 실행 파일(*. exe)을 Linux에서 동작하도록 지원합니다. 잘 아시다시피 C#의 막강한 GUI 개발 내용을 Linux에서 활용할 수 있어 매우 편리한 방법입니다. 이를 사용하기 위해서는 Linux에 MONO 관련된 내용을 설치해야 합니다. sudo apt-get install mono-runtime mono-mcs mono-devel mono-complete -y sudo apt-get install git autoconf libtool automake build-essential mono-devel gettext 테스트용 코드 만들기 원도우즈에서 VisualStuio(VS)로 C# 프로젝드를.. 2021. 8. 9.
RaspberryPi- LCD 해상도 조정 라즈베리파이에 연결관 LCD 화면 해상도 조정 방법 라즈베리파이가 알아서 잘 조정해 주는 경우도 있지만, 대부분의 경우 사용하는 LCD의 해상도를 사용자가 설정해 줘야 합니다. 다음과 같은 방법이 있습니다. 에디터로 /boot/config.txt를 수정합니다. sudo nano /boot/config.txt 아래 내용을 주석 처리합니다. 그리고 원하는 해상도 내용을 입력합니다 (1024x600) #dtoverlay = vc4-fkms-V3D hdmi_group=2 hdmi_mode=87 hdmi_cvt=1024 600 60 6 0 0 0 hdmi_drive=1 lcd_rotate=0 화면 회전을 원하면 lcd_rotate=90과 같이 수정합니다. 2021. 8. 9.