분류 전체보기 130

[기타] 이차 포인터 파라미터 (0xC0000005: 0xCCCCCCD0 위치를 기록하는 동안 액세스 위반이 발생했습니다..)

에러에 대한 거는 기타에 남기는게 좋을거 같아서 정리를 해봅니다. '0xC0000005' 예외가 발생하여 고생을 좀 했습니다.2차원 배열을 선언하여 함수 인자로 이차 포인터로 받으면 에러가 발생하는데구글링에서는 할당을 안해줫다고 나옵니다. 저의 경우에는 다차원 배열 포인터의 특이점(?) 이라 해야 하나요그런 것 때문에 발생했습니다. 코드를 간단하게 해서 보시면 void test(int **arr) { arr[1][1] = 1; } int main(void) { int arr[10][10]; test(arr); return 0; } 에러가 안날것 같지만.. 에러가 발생합니다. 뭐때문일까요 ? 생각보다 간단했습니다...2차 포인터가 2차원 배열을 받으면 각 차원의 갯수를 모르므로 배열접근 시에러가 발생하는 ..

ETC/기타 2017.04.12

[Arduino] 기본 개발 환경

2016년 초에 아두이노로 드론을 만든 이후 1년만에 다시 아두이노를 사용하게 되었다.그런데.. 이거 기억이 하나도 안난다. 개발 환경부터 설정해 보자. 프로그램을 작성/편집하고 컴파일/디버깅 할 수 있는 통합 환경을 IDE라고 하는데아두이노 IDE를 다운 받아 설치해야 한다. 다운로드 : https://www.arduino.cc/en/Main/Software 위의 사이트로 이동하면 각자 환경에 맞는 파일을 다운 받으면 된다.개인적으로 non-install 버전을 좋아해서 그것을 다운 받았다.2017년 3월 30일 기준 버전 1.8.2 이다. 기부해달라고 하는데 나는 가난한 개발자이므로 다운로드만.. 다운로드 후 압축을 풀어보면 위와 같고arduino.exe 를 실행하면 개발 할 수 있는 창이 뜬다.

ETC/Arduino 2017.03.30

[C#] 32bit dll 사용 시 "...호출 결과 스택이 불안정하게 되었습니다." 에러

C++ 64bit Dll 을 만들어서 C# 에서 사용하고 있었다...그런데... 문제가 발생했다. 사용해야 할 PC가 Stick PC 로 바뀌면서 32bit로 변환해주어야 하는 상황이 발생한 것.. dll을 32bit로 컴파일해서 넣으면 끝나는 줄 알았다.그렇게 쉬운게 아니었다. 에러는 계속 나고.. 해결은 안되고.. 다른 에러들은 쉽게 해결했지만 마지막 에러가 오래 걸렸다. 추가 정보: PInvoke 함수 'H-Stage_Demo!H_Stage_Demo.MainForm::SetMagnification'에 대한 호출 결과 스택이 불안정하게 되었습니다. 관리되는 PInvoke 시그니처와 관리되지 않는 대상 시그니처가 일치하지 않기 때문인 것 같습니다. 호출 규칙 및 PInvoke 시그니처의 매개 변수와 관..

programing/C# 2017.03.20

[기타] MS Word Theta 기호..

문서 작성을 하는데 Theta 기호를 넣어야 한다..그런데 간만에 문서작성을해서 이게 어디있는지 도무지 못찾겠는거.. 어떤 사람은 블로그에 'θ' 요거만 복사해 놨더군...그래도 방법을 아는게 낫지 않겠는가. MS Word 기준으로 설명하겠음. 우선 삽입>기호>다른기호 하위집합>그리스어 및 콥트어 요래가면 'Greek Small Letter Theta' 를 찾을 수 있다.

ETC/기타 2017.02.23

[C#] 비프(Beep)음 내기

모터가 멈췄는지 확인하는 함수가 있는데 이게 순식간에 지나가니까 진행되는지 확인이 안되더군..그래서 C# 하기 전에 비프음을 썻던게 생각이 나서 적용해 보기로 햇지.. 출처 : https://msdn.microsoft.com/ko-kr/library/system.media.systemsounds.beep(v=vs.110).aspx 사용법은 간단 간단하다.namesapce = System.Media'using System.Media'를 추가해 주면 된다. 함수는SystemSounds.Beep.Play();간단하죠 ? 주의할점은 SystemSound(s)로 쓰면 안됩니다. 's'를 꼭 체크해주십시오.. 소리는 바꿀 수 있나 모르겠네

programing/C# 2017.02.21

[C#] 시리얼 포트 검색

모터 구동 드라이버 연결을 해서 동작시키는 프로그램을 짜게 되었다.갑자기 짜던 사람이 퇴사하는 바람에... 차근차근 해봅시다. 우선 시리얼 포트로 연결되어 있기에 콤보박스에 시리얼 포트를 검색해서리스트를 추가하는 것을 알아봅시다. 출처 : http://leekd123.tistory.com/48 우선 Ports 추가. using System.IO.Ports; 검색하고 콤보박스에 추가하는 코드 string[] portNames; portNames = SerialPort.GetPortNames(); cbPortList.Items.Clear(); foreach (var item in portNames) { cbPortList.Items.Add(item); } GetPortNames 로 연결된 시리얼 포트를 검색..

programing/C# 2017.02.10

[C#] 배열 0으로 초기화(Enumerable.Repeat)

배열을 선언하면서 0또는 같은 수로 초기화 하고 싶다.그러나 생성자에는 없는듯 하여 알아보았다.한글로 검색하면 나오질 않더이다. 구글 검색 : Array Zero Initialize 참고 : http://stackoverflow.com/questions/14210369/initialize-an-integer-array-with-a-single-value-in-c-sharp-net 정말 단 한줄로 가능.double[] array= Enumerable.Repeat(0, length).ToArray(); 한줄로 끝난다. 굿 ? 자료형만 맞춰주면 되고 '0'에 초기화 하고 싶은 숫자를 넣어 주면 된다.length 는 할당하고 싶은 크기를 넣어 주면 된다.

programing/C# 2017.01.24

[C++] 배열복사 std::copy()

배열을 복사해야 하는 상황이 생겼다. 배열 길이가 무려 uint16_t 640*640 의 길이기에 반복문을 쓰기가 겁이 낫다. 처음에는 반복문을 썻는데 집에와서 생각해보니 memcpy와 같은 함수가 있을 것만 같았다. memcpy는 byte 단위로 복사를 하는거라 다른 방법을 찾던중 std::copy() 함수를 발견했다. 매우매우 간단간단. 소스코드를 봅시다 #include #include using namespace std; int main() { uint16_t src[16], dst[16]; for (int i = 0; i < 16; i++) { src[i] = i * i; } copy(src, src + 16, dst); for (int i = 0; i < 16; i++) cout

programing/C++ 2017.01.19

[C#] DataTable To CSV File (String.Join() 사용)

아학학학학학학.. 매우 간단하게 DataTable을 CSV 파일로 저장하는 방법을 찾아냈다. 포지션 위치랑 각도 등을 테이블로 만든 후 csv 파일로 저장해야 되서 해보았다.반복도 매우 심플하게 해놓았다. 가져다 쓰시게.. 난 까먹을거 같아서 정리를.. 1. 파일 저장 위치 지정2. dataTable columns를 String.Join()을 사용해서 파일에 저장.3. 각 row를 String.Join()을 사용해서 파일에 저장.4. 저장 확인. 우선 코드 private void btnSaveTable_Click(object sender, EventArgs e) { //파일 저장 위치 선택. SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.InitialD..

programing/C# 2017.01.04

[C#] c++ Dll import (출처 및 팁..)

출처 : http://blog.danggun.net/16 위의 출처대로 하면 일단은 잘 됩니다. 단 제가 무시하고 했던것이 1-0.인크루드 이 부분이었는데꼭!!!!!!!!! #include 이거를 헤더에서 추가를 해주어야 합니다!!!! 꼮 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! tip1. 전달할 인자가 포인터 이면 ref를 사용해서 넘기면 됩니다.예를 들어 void swap(int *a, int *b) 로 c++에서 선언했다면C#에서는 void swap(ref int a, ref int b) 이렇게 해주면 됩니다. tip2. c++ 컴파일 환경과 C# 컴파일 환경이 맞아야 합니다. C#의 경우 anyCpu 라고 나오는데 이거스로 하면 c++ x86 DLL을 ..

programing/C# 2017.01.03