툴을 이용해서 OS 이미지를 심는 과정중

SD용량이 16GB 인데 4GB 밖에 할당하지 않는다.

그리고 아래와 같이 MySQL을 설치하면 ...  개망.


can@can-desktop:~$ sudo apt-get install mysql-server mysql-client php5-mysql

[sudo] password for can:

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

다음 패키지를 더 설치할 것입니다:

  php5-common

제안하는 패키지:

  php5-user-cache

다음 새 패키지를 설치할 것입니다:

  mysql-client mysql-server php5-common php5-mysql

0개 업그레이드, 4개 새로 설치, 0개 제거 및 91개 업그레이드 안 함.

1개를 완전히 설치하지 못했거나 지움.

524 k바이트/542 k바이트 아카이브를 받아야 합니다.

이 작업 후 1,487 k바이트의 디스크 공간을 더 사용하게 됩니다.

계속 하시겠습니까? [Y/n] y

받기:1 http://ports.ubuntu.com/ wily-updates/main php5-common armhf 5.6.11+dfsg-1ubuntu3.1 [471 kB]

받기:2 http://ports.ubuntu.com/ wily-updates/main php5-mysql armhf 5.6.11+dfsg-1ubuntu3.1 [53.2 kB]

내려받기 524 k바이트, 소요시간 2초 (237 k바이트/초)

Selecting previously unselected package mysql-client.

(데이터베이스 읽는중 ...현재 167110개의 파일과 디렉터리가 설치되어 있습니다.)

Preparing to unpack .../mysql-client_5.6.28-0ubuntu0.15.10.1_all.deb ...

Unpacking mysql-client (5.6.28-0ubuntu0.15.10.1) ...

Selecting previously unselected package mysql-server.

Preparing to unpack .../mysql-server_5.6.28-0ubuntu0.15.10.1_all.deb ...

Unpacking mysql-server (5.6.28-0ubuntu0.15.10.1) ...

Selecting previously unselected package php5-common.

Preparing to unpack .../php5-common_5.6.11+dfsg-1ubuntu3.1_armhf.deb ...

Unpacking php5-common (5.6.11+dfsg-1ubuntu3.1) ...

Selecting previously unselected package php5-mysql.

Preparing to unpack .../php5-mysql_5.6.11+dfsg-1ubuntu3.1_armhf.deb ...

Unpacking php5-mysql (5.6.11+dfsg-1ubuntu3.1) ...

mysql-server-5.6 (5.6.28-0ubuntu0.15.10.1) 설정하는 중입니다 ...

Job for mysql.service failed because a timeout was exceeded. See "systemctl status mysql.service" and "journalctl -xe" for details.

invoke-rc.d: initscript mysql, action "start" failed.

dpkg: error processing package mysql-server-5.6 (--configure):

 설치한 post-installation 스크립트 하위 프로세스가 오류 1번을 리턴했습니다

mysql-client (5.6.28-0ubuntu0.15.10.1) 설정하는 중입니다 ...

dpkg: dependency problems prevent configuration of mysql-server:

 mysql-server 패키지는 다음 패키지에 의존: mysql-server-5.6: 하지만:

 mysql-server-5.6 패키지는 아직 설정하지 않았습니다.


dpkg: error processing package mysql-server (--configure):

 의존성 문제 - 설정하지 않고 남겨둠

php5-common (5.6.11+dfsg-1ubuntu3.1) 설정하는 중입니다 ...

보고서를 작성하지 않습니다. 오류 메시지에 따르면 예전의 실패 때문에 생긴 부수적인 오류입니다.


Creating config file /etc/php5/mods-available/pdo.ini with new version


Creating config file /etc/php5/mods-available/opcache.ini with new version

php5-mysql (5.6.11+dfsg-1ubuntu3.1) 설정하는 중입니다 ...


Creating config file /etc/php5/mods-available/mysql.ini with new version


Creating config file /etc/php5/mods-available/mysqli.ini with new version


Creating config file /etc/php5/mods-available/pdo_mysql.ini with new version

처리하는데 오류가 발생했습니다:

 mysql-server-5.6

 mysql-server

E: Sub-process /usr/bin/dpkg returned an error code (1)

can@can-desktop:~$



지우고 설치하기를 여러번~~

아래 사이트에서 깨끗이 지우고 재 설치하는 방법대로 해보니 된다. ㅠㅠ 


http://blog.naver.com/kon_pig?Redirect=Log&logNo=220420935398



Posted by +깡통+

영국의 라즈베리 재단에서 만든 교육용 컴퓨터.


35 달러라는 저렴한 가격으로 전세계에 보급하는 훌륭한 프로젝트다.


라즈베리 Zero 라는 제품은 5달러 수준이다.


기가 막힐 일이다.


Z80, AVR, STM32 시리즈를 거쳐오면서 하드웨어 보드를 매번 새롭게 설계하는 것이 비효율 적이라는 의견에 공감을 해왔었다.


내가 다니는 회사에서는 하드웨어 보드를 설계하는 것 자체를 싫어 했다.


기성품에 S/W만 넣어서 파는 것이 가장 효율적이라고 사장님은 말했다.


과거에 만들던 보드들을 싹 다 버리고 PLC 등으로만 엮어서 만든 것이 개발 기간을 단축하고 현명하다 판단했기에 지금의 자리까지 오르지 않았겠는가 싶다.


주절은 그만하고...


이러한 측면에서 라즈베리파이 보드는 내게 새로운 길을 열어다 줄 것이 자명한 일이었다.


미리 구매하고 싶었지만 아직은 시기 상조이다 싶었다. Pi 3를 보는 순간 마음이 움직였다.


게다가 디**마트 에서는 정품 보드3 + 정품 케이스 + 방열판 2종 + 2.5A 아답터를 포함하여 VAT 별도로 59,000원에 판매했다.


Move Move!!  이렇게 내손에 도착한 보드.  아참! MicroSD카드는 별도 구매다. 16G 이상으로 구매하면 적당할듯.

Posted by +깡통+

 

 

 

'콩이'라는 녀석을 대리고 온지 보름이 지났네요.

통쥬2가 두려운가 봅니다 ㅎㅎ

 

 

맨날 '콩이'를 인형처럼 안고 다니는 통쥬~ ^^

어느덧 초등학생이 되었습니다.

 

^^ 그렇게 2016년은 3월을 맞이 하네요.

아파트 단지에서 찍은 봄을 알리는 매화나무..

 

 

 

 

 

Posted by +깡통+
2016. 1. 29. 09:14

우린 살면서 여러가지 결정을 한다.

이 물건을 살까? 말까? 부터 그곳을 갈까? 말까? 이 길로 갈까? 말까? 등등.

우리의 인생은 네비게이션이 없다.

어떠한 길로 어디로 가는지 모르고 살고 있지 않은가..

그래도 가까운 미래의 예측은 하면서 살고, 그 예측된 길을 바꾸려고 부단히 노력한다. ( 좀더 좋은 길로 가기 위해서..  )

 

세월호 사고가 일어나기 전에 전재용 선장님에 관한 글을 읽었다.

우리나라 원양어선이 필리핀 보트피플을 구한 스토리 였다.

그 순간의 결정에는 자신의 인생이 뒤 바뀔수 있다는 것을 분명히 그분은 예측 했을 것이다.

내가 지나친다면 저 들은 바다 한가운데에서 굶어 죽게 될 것이고

태우고 돌아간다면 선주에게서 징계(해고)를 당할 것이다.

결국 해고를 당했고 관련 업계에서 일을 하지 못했다고 전해진다.

 

그 후 30년이 흘렀고 보트피플의 사람들은 미국에서 전재용 선장님을 다시 찾았다고 한다.

그 때 그 고마움을 평생 간직하고 표시하고 싶었을 것이다.

 

보통의 사람들 이라고 단정하기 어렵지만 대다수가 그런 결정을 하지 못한다.

지금의 삶에서 좀 더 나아가고 발전되기를 희망하지 후퇴하는 것을 용납 할 수 없기 때문이다.

 

참으로 용기 있는 결정이고 아름답고 훌륭한 인생이 아닌가?

자주 돌이켜보고 마음에 새겨 두어야 겠다.

Posted by +깡통+

VB6 에서 발생하는 에러 입니다.

 

UDP 소켓을 이용하시나요?

sckUDP.SendData "aaa"

 

상대방 UDP 포트가 없다면 송신 오류가 발생한다.

근데 SendData 할때는 발생하지 않고

 

 

Private Sub sckUdp_DataArrival(ByVal bytesTotal As Long)
    Dim sRecvData As String
    sckUDP2.GetData sRecvData    '// 여기서 발생한다.
    Call S_LPR_Process(1, sRecvData)
End Sub

 

 

처리 방법은 아래와 같다.


Private Sub sckUdp_DataArrival(ByVal bytesTotal As Long)
    On Error Resume Next
    Dim sRecvData As String
   
    sckUDP2.GetData sRecvData
    If err.Number Then err.Clear: Exit Sub
       
    Call S_LPR_Process(1, sRecvData)      
End Sub

 

 

 

참고자료.

https://support.microsoft.com/ko-kr/kb/260018

 

Posted by +깡통+

503. Bad Sequence.

파일명을 변경하려니 에러가 난다. 


한 두시간 고생했나?

wininet 에 FTPRename  함수가 안먹길래 FTPCommand 를 주려고 했었다.

그래도 안되는군아..


원인은 퍼미션 이었다.

그냉 배드 스퀀스 말고 퍼미션 오류라고 띄워주면 빨리 찾았을텐데.. ㅠㅠ

파일 쓰기는 가능했지만 이름을 변경하는데는 다른 권한을 쓰는것 같다.

아무튼 모든 권한을 주고 해결 봄.


[7] 이름 변경-FROM (RNFR)

- 사용형식 : RNFR <SP> <pathname> <CRLF>

- 설명 : 파일이나 디렉토리의 이름을 변경할 때 쓰이며, 아래의 RNTO명령어와 함께 사용되어야 한다.

예를 들어, 파일이름을 A에서 B로 바꾸고자 할 경우, 'RNFR A' 를 먼저 수행 한 후에 아래의 'RNTO B' 를 수행함으로써

파일이름 변경작업이 완료된다.

 

[8] 이름 변경-TO (RNTO)

- 사용형식 : RNTO <SP> <pathname> <CRLF>

- 설명 : 위의 RNFR참고 바람

Posted by +깡통+

보통은 I2C EEPROM을 많이 이용하는데 어쩌다보니 SPI로 설계해 버렸다.

그로 인해서 시간을 조금 허비? 했다.


SPI Write를 하는데 1 PAGE만 쓰기가 가능하고 이후 데이터를 오리무중이다..

정말 쓰기가 잘못 된건지 반대로 읽기가 안되는건지 종일 고민했다.


AT25040B 의 경우 아이러니 하게도 WREN 명령을 1 PAGE Write 할때마다 줘야한다. 이게 포인트...



void SPI_Flash_WriteArray(uint16_t address, uint8_t *data, uint8_t len) { uint16_t addr = address; uint8_t i = 0; while( i < len ) { SPI_Flash_WriteEnable();    // <== 이놈이 문제였음. EEPROM_CS_LOW(); SPI_SendByte(WRITE); // 명령선택 //SPI_SendByte((addr & 0xFF00) >> 8); // 상위어드레스를 쓸 경우 SPI_SendByte(addr & 0xFF); // 하위어드레스 for(; i < len;) { SPI_SendByte(data[i++]); // 쓸 데이터 1 Byte씩 보내기 if(++addr % PAGE_SIZE == 0) { break; } } EEPROM_CS_HIGH(); delay_ms(10);    // 칩마다 틀리지만 쓰기를 실행하는데 5ms 필요하다. } }


Posted by +깡통+
2015. 10. 15. 10:48

7년 만에 다시 방문한 대관령 양떼목장.

그곳에 양몰이 개라고 소개했던 그 개가 그대로 있더라.

허허~ 이제 늙었을텐데 라는 생각에 주변에 나뭇가지를 가지고 와 던져주니~

이 녀석 아직도 잘 받아주더라 ㅎㅎㅎ


그땐 통쥬가 엄마 뱃속에 있을 때였고~

지금은 통쥬2까지 개를 가지고 놀다니~

이젠 뭐 놀랄일도 아니지만 세월이 참 빠르다는 생각을 또 한번 했다. 


Posted by +깡통+

도구->옵션->디렉토리 에서 각각 컴파일에서 참조할 폴더를 지정하는 방법.


또는 StdAfx.h 파일에다가 참조할 헤더파일과 라이브러리를 지정하는 방법.

아시겠지만 DLL 참조시 lib 파일이 함께 필요합니다.

DLL 파일은 EXE 파일이 실행될때 필요 한 것일뿐이고 Lib 파일은 컴파일시 링크때 필요한 파일 입니다.



#pragma comment(lib, "./Others/Libs/xxx.lib")

#pragma comment(lib, "./Others/Libs/xxx2.lib")



위 코드는 VC6.0, VC9.0 (2008) 에서 적용했습니다.


Posted by +깡통+

 

 

 

T= RichTextBox 1개와 T2= TextBox 1개를 만듭니다.

버튼을 3개 그리세요~

 

Private Sub Command1_Click()
    T.Text = "AA하하호BB호히히히XX"
    T.SelStart = 1
    T.SelLength = 2
    T.SelColor = vbRed
    T.SelStart = 4
    T.SelLength = 2
    T.SelColor = vbGreen
    T.SelFontName = "궁서"  
End Sub

 

Private Sub Command2_Click()
    T.Text = ""
    T.SelRTF = T2.Text
End Sub

 

Private Sub Command3_Click()    
    T.SelStart = 0
    T.SelLength = Len(T)   
    T2.Text = T.SelRTF   
End Sub

RTF 값에서 얻은 코드는 아래와 같습니다.

대부분 \f 로 시작하면 명령어로 처리 하며,

\cf 는 폰트의 색상을 처리하고 \' 로 시작하면 2 Byte로 처리합니다.

 

첫번째 대괄호는 폰트 정보이며,

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset129 \'b1\'bc\'b8\'b2;}{\f1\fnil\fcharset129 \'b1\'c3\'bc\'ad;}}

두번째 대괄호는 색상 정보입니다.
{\colortbl ;\red255\green0\blue0;\red0\green255\blue0;}

아래 코드는 ?? 아직 모르겠네요~
\uc1\pard\lang1042

\f0    // 0 번째 폰트선택( 상단에 빨간색 부분 입니다. 폰트명이 기재되어 있습니다. )

\fs18    // 폰트 사이즈를 의미 합니다.

A    // 'A' 출력

\cf1 // 컬러를 1번째 색상 정보를 사용하네요.  Red 입니다.

A    // 'A' 출력

\'c7\'cf    // '' 출력

\cf0    // 컬러를 0번째 즉, 기본값 Black 으로 변경합니다.

\'c7\'cf    //  '하' 출력

\cf2    // 컬러를 2번째 색상 정보를 사용합니다. Green 입니다.

\f1    // 1 번째 폰트선택( 상단에 파란색 부분 입니다. 다른 폰트명이 기재되어 있네요 )

\'c8\'a3    // '' 출력

B        // 'B' 출력

\cf0    // 컬러를 0번째 Black 으로 변경합니다.

\f0     // 폰트도 0번째로 변경합니다.

B        // 'B' 출력

\'c8\'a3    // '호' 출력

\'c8\'f7    // '히' 출력

\'c8\'f7    // '히' 출력

\'c8\'f7    // '히' 출력

X            // 'X' 출력

X            // 'X' 출력

}

 

하아~  이로써 Color 정보에 대한 분석을 마쳤습니다.

도움이 되시는 분들이 있기를~~!!

 

참고 주소 : https://msdn.microsoft.com/ko-kr/library/ee681613(v=vs.95).aspx

Posted by +깡통+

PCB를 뭣 모르고 설계를 시작할 땐 몰랐던 것들..

전기전자 기초지식이 부족하다면 꼭 주의해야 합니다.


패턴 폭과 허용 전류.

 Pattern 폭(mm)

전류(A) 

0.4 

1.0 

0.6 

1.4 

0.8 

1.8 

1.0 

2.2 

1.5 

3.0 

2.0 

3.4 

3.0 

3.8 

 

위의 수치는 각종 그래프에서도 확인이 가능하다.

수치는 수치일뿐 보통의 사람들은 전류 100mA 마다 Pattern 폭 0.1mm 로 한다.

최대허용전류를 구하는게 아니니까~!

더더더 중요한것이 있는데 온도 상승이다.

허용 전류보다 높지 않다고 온도가 안올라 가는것이 아니다.

동박의 저항으로 인하여 높은 전류는 열이 발생하기 마련!  가장 주의하도록 하자.

Final 동박 두께는 30㎛온도 상승 10℃







출처: http://mgoons.tistory.com/trackback/12

Posted by +깡통+

난 정말 잘 잊어 먹는다.

전자과 출신이었다면 죽도록 외웠을지 모르겠다.

 

기초전자가 약해 책 4권이나 사다놨다.

이것도 실무에서 바로 적용하려면 머리속에 다 넣어두어야 하는데..

이제 늙은건가? 외워도 까먹는다.

 

하아~~

 

기초중에 가장 기초가 되시겠다.

TR은 NPN형, PNP형이 있다.

이것도 모르면서 아트웍 했더니 난리가 났다.

알티움에선 기본적으로 부품명을 라이브러리에서 선택하면

FootPrint 까지 바로 선택하는데 여기서 EBC가 틀려 먹는 경우가 많다.

더 정확하게는 SOT-23 형을 골라낸뒤 핀번호를 잘못 연결한 경우가 더 많다.

 

따라서 사용할 부품을 DataSheet를 면밀히 검토해야 하는데 불행히도 TR 시트에는

핀번호 1,2,3 과 EBC가 잘 표현되어 있지 않다.  왜냐! 다 아는 기초니까. ㅎㅎㅎㅎㅎㅎ  모르는게 죄다.

 

* 트랜지스터 단자 판별법

1. 테스터기를 Ω에 맞춘다.

2. 하나의 리드선(+ 또는 - 아무거나) 을 트랜지스터의 임의의 단자에 대고

   다른 하나의 리드선을 남은 두 TR 단자에 교대로 대어 본다.

   이때, 어느 단자하고도 도통이 되는 단자가 베이스(B)이다.

3. 베이스(B) 단자가에 적색 테스트 리드선이면 NPN형 TR 이고, 흑색 테스트 리드선이면 PNP형 TR이다.

4. 트랜지스터 전극사이의 저항값을 측정하여 이미터(E)와 컬렉터(C)를 찾는다.

    NPN형 이면, 베이스(B)에 적색 리드선을 대고, 

    이미터(흑색리드선) 간의 저항값이 컬렉터(흑색리드선) 간의 저항값 보다 약간 크다.

    PNP형 이면, 베이스(B)에 흑색 리드선을 대고, 

    이미터(적색리드선) 간의 저항값이 컬렉터(적색리드선) 간의 저항값 보다 약간 크다.

 

주의!!  이미터와 컬렉터를 찾을때 손을 조심하자! 높은 저항값이 측정되기 때문에 인체의 저항이 측정되는 경우가 있다.

이러면 재수 없는 결과를 초래한다. 회로 실패, 크게는 잘못된 회로로 인한 화재??  오버인가요?

 

Posted by +깡통+

Warning.

Drill Symbol limit exceeded. System will switch to letter generation.


이런 경고가 뜬다.

말그대로 드릴 심볼이 부족하다는 것인데.


Gerber Files 설정에서 [드릴 그림]이란 탭이 있다.

여기서 드릴 그림 심볼 선택을 [크기별 문자]로 해주면 된다.


Cam 파일을 확인해보면 그릴 구멍마다 치수가 표시되어 복잡한 느낌을 받을 수 있다.

허나 그건 PCB 제조업체의 일이니까 ^^;;

Posted by +깡통+

 

수제 돈까스 전문점.

 

모이라(MOIRA) 상인점이 오픈했네요.

 

롯데백화점 상인점 뒷편 공영주차장과 마주보고 있습니다.

 

수제 돈까스가 무한리필!!  후식으로 테이크아웃 커피까지~!~!

 

맛도 고를수 있는데 순한맛, 매콤한맛, 매운맛 있더라구요.

 

매운맛은 엄청 매우니까 왠만하면 도전하지 마세요~

 

리필 할 때마다 맛을 고를 수 있고 밥은 조금 나옵니다.  더 주세요~ 하면 더 주더라구요.

 

식사 전 맛깔난 사진을 찍어 SNS 에 올리면 최대 2000원까지 DC 하는 행사도 한답니다.

Posted by +깡통+

VB6 에서 Sheridan 3D Controls (threed32.ocx) 을 이용하여 버튼을 만드는 경우가 있다.

 

프로그램을 실행하여 테스트중 SSCommand 버튼을 클릭하는 순간 프로젝트가 닫히고 VB6 까지 종료되는 버그를 경험하였다.

 

몇번 그 문제를 해결했었는데 포스팅을 남겨놔야 다시 찾을 것 같다.

 

원인: 모름.

 

해결방법: VS6sp5VB.exe   서비스팩 5을 설치하고 해결.

 

 

 

Posted by +깡통+

두개의 체크박스를 옵션처럼 쓰고

또 각각의 체크박스가 선택해제되게 하려면 아래와 같이 코딩하면 된다.

 

Private Sub Check1_Click()
    If Check1.Tag = "BUSY" Then Exit Sub
    If Check2.Value = vbChecked Then
        Check2.Tag = "BUSY"
        Check2.Value = vbUnchecked
        Check2.Tag = ""
    End If
End Sub

Private Sub Check2_Click()
    If Check2.Tag = "BUSY" Then Exit Sub
    If Check1.Value = vbChecked Then
        Check1.Tag = "BUSY"
        Check1.Value = vbUnchecked
        Check1.Tag = ""
    End If
End Sub

 

Posted by +깡통+

최신 Wiznet 사의 W5500 칩을 테스트 하던중에 발견.

최신드라이버 파일이라고 잘 정리해 둔것을 보고 써보던중에 발견함.

 


uint8_t  getIMR(void)
{
   return WIZCHIP_READ(IMRw);  // 이렇게 수정함.
}

 


uint8_t  getIMR(void)
{
   return WIZCHIP_READ(IMRw);
}

 

#define IMRw               (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_CREG_BLOCK << 3))

 

RCR 도 마찬가지~

 

 

D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2861 #define  EXTI_IMR_MR10                       ((uint32_t)0x00000400)        /*!< Interrupt Mask on line 10 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2862 #define  EXTI_IMR_MR11                       ((uint32_t)0x00000800)        /*!< Interrupt Mask on line 11 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2863 #define  EXTI_IMR_MR12                       ((uint32_t)0x00001000)        /*!< Interrupt Mask on line 12 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2864 #define  EXTI_IMR_MR13                       ((uint32_t)0x00002000)        /*!< Interrupt Mask on line 13 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2865 #define  EXTI_IMR_MR14                       ((uint32_t)0x00004000)        /*!< Interrupt Mask on line 14 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2866 #define  EXTI_IMR_MR15                       ((uint32_t)0x00008000)        /*!< Interrupt Mask on line 15 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2867 #define  EXTI_IMR_MR16                       ((uint32_t)0x00010000)        /*!< Interrupt Mask on line 16 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2868 #define  EXTI_IMR_MR17                       ((uint32_t)0x00020000)        /*!< Interrupt Mask on line 17 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2869 #define  EXTI_IMR_MR18                       ((uint32_t)0x00040000)        /*!< Interrupt Mask on line 18 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 2870 #define  EXTI_IMR_MR19                       ((uint32_t)0x00080000)        /*!< Interrupt Mask on line 19 */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7511 #define ETH_MACIMR_TSTIM     ((uint32_t)0x00000200)  /* Time stamp trigger interrupt mask */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7512 #define ETH_MACIMR_PMTIM     ((uint32_t)0x00000008)  /* PMT interrupt mask */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7586 #define ETH_MMCRIMR_RGUFM    ((uint32_t)0x00020000)  /* Mask the interrupt when Rx good unicast frames counter reaches half the maximum value */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7587 #define ETH_MMCRIMR_RFAEM    ((uint32_t)0x00000040)  /* Mask the interrupt when when Rx alignment error counter reaches half the maximum value */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7588 #define ETH_MMCRIMR_RFCEM    ((uint32_t)0x00000020)  /* Mask the interrupt when Rx crc error counter reaches half the maximum value */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7591 #define ETH_MMCTIMR_TGFM     ((uint32_t)0x00200000)  /* Mask the interrupt when Tx good frame count counter reaches half the maximum value */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7592 #define ETH_MMCTIMR_TGFMSCM  ((uint32_t)0x00008000)  /* Mask the interrupt when Tx good multi col counter reaches half the maximum value */
D:\test\Libraries\CMSIS\Core\CM3\stm32f10x.h 7593 #define ETH_MMCTIMR_TGFSCM   ((uint32_t)0x00004000)  /* Mask the interrupt when Tx good single col counter reaches half the maximum value */
D:\test\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c 86 EXTI->IMR = 0x00000000;
D:\test\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c 115 EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
D:\test\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_exti.c 230 enablestatus =  EXTI->IMR & EXTI_Line;
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\netctrl.c 82 setIMR((uint8_t)(option_value&0x00FF)); // set interrupt mask.
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 373 void     setIMR(uint8_t imr)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 373 void     setIMR(uint8_t imr)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 375 WIZCHIP_WRITE(IMR, imr);
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 375 WIZCHIP_WRITE(IMR, imr);
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 378 uint8_t  getIMR(void)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 380 return WIZCHIP_READ(IMR);
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 393 void     setSIMR(uint8_t simr)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 393 void     setSIMR(uint8_t simr)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 395 WIZCHIP_WRITE(SIMR, simr);
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 395 WIZCHIP_WRITE(SIMR, simr);
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 398 uint8_t  getSIMR(void)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 400 return WIZCHIP_READ(SIMR);
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 547 void     setSn_IMR(uint8_t sn, uint8_t imr)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 547 void     setSn_IMR(uint8_t sn, uint8_t imr)
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 549 WIZCHIP_WRITE(Sn_IMR(sn), (imr & 0xF0));
D:\test\Libraries\W5500_iolibrary_v100\ethernet\w5500\w5500.c 549 WIZCHIP_WRITE(Sn_IMR(sn), (imr & 0xF0));

Posted by +깡통+

아아..

 

블로그 패스워드도 잊고서 마치 먼지가 소복히 쌓인 빈집에 들어온 것 처럼..

 

주인이 나타났죠 -_-;;

 

정말 바쁜 나날을 보내느라고 라며 슬쩍 핑계를 또 내어 봅니다.

 

다들 잘 계신가요?  하루 방문자가 최소 130명을 유지하는 블로그 -_- 뭘 보실것이 있다고 ㅋㅋ..

 

마침 오늘이 식목일이네요.

 

이 블로그에도 새로 나무를 심듯이 생명을 불어 넣어 볼까 싶네요. ^^

 

자~ 시작해 보아요.

Posted by +깡통+

VB 가지고 밥먹은지 10년째..

정말 프로그래머의 인생은 끝 없는 공부의 연속이다.

 

아직 몰랐던 함수를 정리하고자 한다.

 

LSet - 메모리 복사 개념. 형식이 다른 변수를 대입하여 복사 할 수 있다.  Integer -> 2 Byte 배열

Filter - 문자열 배열에서 지정된 문자열을 포함하는 요소를 뽑아 다시 배열로 반환하는 함수.

Join - Split 반대의 개념. 나눴던 문자열 배열을 다시 결합하는 함수

StrReverse - 문자열을 역순으로 바꾸어 반환하는 함수

 

Posted by +깡통+

 

 

  

 

 

팔공산 뒷편 입니다.

 

치산계곡 부근인데 마을 골목길을 지나쳐 들어와야 하기때문에

 

외지 손님은 드문 편 입니다.

 

조용히 놀다 가기엔 딱!!!

 

애들 없을때도 여기서 고기 구워먹으며 놀았었더란...  ㅎㅎㅎ

Posted by +깡통+

 

 

 

어느새 이만큼 자라버린 통쥬.

 

^^

 

귀엽지용?

Posted by +깡통+

카카오톡.

 

스마트폰 시대에 맞춰 발빠르게 전파된 모바일 메신저.

 

그 두번째 작품. 카카오스토리!

 

이거 뭐...  대충 싸이월드 따위 망하는건 시간문제라고 느껴졌다.

 

똑같은 사진과 똑같은 글을...

 

여러 매체를 통해서 올리는 행위는 스마트폰 시대에 맞지 않으니까.

 

어찌되었든 이곳 주인도 엄청난 귀차니즘을.. 아니 게으름의 증인이라고 해야겠다.

 

돈 들여 유지하는 도메인이나..  아직 개점 휴업상태나 다름없는 다른 도메인들까지~

 

전혀 관리가 안되고 있더라..  ㅎㅎㅎㅎ

 

먹고 사는게 문제인가? 아님 시간이 안생기는건가? - _- 미ㅏㄴㅇ러;미낭럼;ㅣ나러ㅣ -_ - 젠장!

 

Posted by +깡통+
2011. 11. 28. 16:33

 

겨울옷 장만하러 이시아폴리스 롯데몰을 찾았습니다.
지하에는 수백대가 주차 할 수 있는 B1, B2 주차장..
1층, 2층에는 각종 옷가게 들이 즐비하구요.
밥집, 커피전문점, 3층에는 CGV영화관이 있습니다.
그러나... 통쥬를 데리고는 영화를 볼 수 없다는 ㅠㅠ...
암튼 나름대로 넓은 쇼핑몰 발품 팔아서 결국 유니클로에서 구입하게 되었구요.
처음 구입해보는데 가격대비 품질이 우수했습니다.
구입하고 나니 -_- 이나영과 옷이 같군요. ㅋㅋㅋ
히트텍 한벌에 14900원 두벌에 19900원..   워어 -0- 5000원에 한벌더!! (세일 기간 확인하세요)


통쥬는..

스스로 뛰어가 포즈를 취하고는..
아빠~~!!!!!  라고 소리 칩니다.




쇼핑몰 한 가운데에 크리스마스 트리가 우뚝~

^^ 마음 푸근해 지네요.


Posted by +깡통+
2011. 10. 8. 11:04

2011년 9월 29일 오전 10시...
3.4kg  49cm
태명 : 호연이가 태어났습니다.









집안에 경사가 아닐 수 없죠..

두 할머니가 지켜보고 계십니다. ^^




하..  사진을 보고 있으면 흐믓해지는 이 기분..
뭐라 표현할 방법이 없네요 ㅎ
우리나라 평균 출산률이 1.2명 입니다.
애 놓고 살기 힘들다는 거지요.
그래도 훗날 피붙이가 있으면 서로에게 큰 힘으 될껍니다.
다출산 운동하는거 같네요 ㅎㅎ..

잘 키우겠습니다.
정직하고 겸손하고 씩씩하게!!!
아자아자!

p.s
통쥬란 별칭을 심연님께서 처음 지어 주셨습니다.
자연스레 둘째도 통쥬2가 되어 버렸네요.
나중에 커서 아빠 내가 왜 통쥬2야? 하면..
아 그건.. 
"옛날하고 옛날에 장가를 못가신 작업대마왕 심연님께서 지어주신 거란다."
라고 할껍니다.





Posted by +깡통+
1.2Mb 나 되는 데이터를 읽어들였다.
1296 x 964 정도 되는 이미지 파일인데 처리를 위해서는 2차원 배열이 필요 했다.

 int cols=1296, rows=964;
 unsigned char *p  = new unsigned char [rows * cols];
 unsigned char (*pdata)[1296] = (unsigned char (*)[1296])p;   // 여기서 [] 안의 값은 1차 배열의 크기를 뜻한다.

즉..  처리 후에는 pdata[964][1296]  가 생기는 것이다.  ^^

 FILE *fp;
 fp = fopen("1.RAW", "rb");
 fread(p, 1, cols * rows, fp);



참고 자료 : http://blog.naver.com/yonguk6726/30084714204
Posted by +깡통+





threed.ocx 에서 발생했다.  헉 수많은 프로젝트가 이걸 썼는데 갑자기 실행이 안된다 ㅠㅠ
가끔 어떤 프로그램을 설치했을때.. OCX 버전 충돌이나
혹은 나처럼 디어셈블리어를 설치했더니 겪는 문제이다. ( 추측 )

문제 해결방법은..  아래 사이트에서 디자인 타임 라이센스를 변경해주는 패치를 해주면 된다.
http://support.microsoft.com/kb/195353/ko


기술 자료: 195353 - 마지막 검토: 2005년 3월 7일 월요일 - 수정: 3.3

FILE: 중지된 컨트롤에 대한 라이센스 VBUSC.EXE가 제공합니다.

모두 확대 | 모두 축소

요약
VBUSC.EXE 이전 버전의 Visual Basic 선적된 있지만 더 이상 지원되지 않으므로 및 현재 버전과 단종되지 ActiveX 컨트롤에...

VBUSC.EXE 이전 버전의 Visual Basic 선적된 있지만 더 이상 지원되지 않으므로 및 현재 버전과 단종되지 ActiveX 컨트롤에 대한 디자인 타임 라이센스 설치합니다 파일입니다.

추가 정보
Microsoft 다운로드 센터에서 다음 파일을 다운로드 할 수 있습니다: VBUSC.exe (http://download.microsoft.c...

Microsoft 다운로드 센터에서 다음 파일을 다운로드 할 수 있습니다:
VBUSC.exe (http://download.microsoft.com/download/vb60pro/install/2/win98/en-us/vbusc.exe)
2000년 8월 15일 릴리스 날짜:

Microsoft 지원 파일을 다운로드하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) 온라인 서비스로부터 Microsoft 지원 파일 구하는 방법
Microsoft는 이 파일에 대한 바이러스를 검색합니다. Microsoft는 파일을 게시한 날짜에 사용할 수 있었던 최신 바이러스 검색 소프트웨어가 사용됩니다. 해당 파일을 무단으로 변경할 수 없는 보안이 향상된 서버에 보관됩니다.
    FileName               Size
   ---------------------------------------------------------
   VBUSC.EXE                88k
				
다음 컨트롤은 Microsoft Visual Basic에서 더 이상 지원되지 않습니다:
ActiveX Control Name                Filename
------------------------------------------------
Desaware Animated Button Control    ANIBTN32.OCX
Microhelp Gauge Control             GAUGE32.OCX
Pinnacle-BPS Graph Control          GRAPH32.EXE
Microsoft Grid Control              GRID32.OCX
Microhelp Key State Control         KEYSTA32.OCX
Microsoft Outline Control           MSOUTL32.OCX
Outrider SpinButton Control         SPIN32.OCX
Sheridan 3D Controls                THREED32.OCX
				
있는 ActiveX 컨트롤 위에 나열된 더 이상 지원되지 않으며, 있지만 기존 프로젝트를 업그레이드할 때 이전 버전과의 호환성을 위해 전문가 및 엔터프라이즈 버전 중 Visual Basic 배를.

이러한 컨트롤은 학습 Edition의 Microsoft Visual Basic 함께 제공되는 수행할지 않습니다.

전문가 및 엔터프라이즈 버전 컨트롤 설치 CD 다음 위치에 있는:
Microsoft Visual Basic Edition        Location
----------------------------------------------------------------------
Professional 6.0                      \Common\Tools\VB\Controls
Enterprise 6.0                        \Common\Tools\VB\Controls
Visual Studio Professional 6.0        \Common\Tools\VB\Controls (CD2)
Visual Studio Enterprise 6.0          \Common\Tools\VB\Controls (CD3)
				
이러한 디렉터리의 각 README.TXT 디자인 타임 사용할 컨트롤을 설치하는 방법에 대한 지침이 포함되어 있습니다.

참고: Visual Basic의 이전 버전에서 개발한 프로젝트를 업그레이드하려면 학습 Edition 사용 문제가 이러한 컨트롤에 대한 라이센스 발생할 수 있습니다.

해당 VBUSC.EXE VBA 컴퓨터에서 검색된 경우 위에 나열된 컨트롤에 대한 디자인 타임 라이센스를 설치합니다.








Posted by +깡통+
※ WM_SYSCOMMAND → WM_CLOSE → WM_DESTROY → WM_QUIT




1. WM_CLOSE
   - 윈도우가 닫히기 전에 메시지가 전달 된다.
   - 아직 윈도우가 파괴된 것은 아니므로 윈도우가 파괴되는 것을 중간에 제어 할 수 있다.
   - 윈도우의 “닫기” 를 누르거나, 키보드의 “Alt + F4”를 눌렀을 경우 발생



   - WM_CLOSE 의 핸들러(OnClose) 에서 추가적인 제어를 하지 않는다면 메시지는
      DefWindowsProc 로 보내진다.
   - CDialog::OnClose() 는 내부적으로 DestroyWindow() 함수를 호출 한다.
   - DestroyWindow() 함수는 내부적으로 WM_DESTROY 메시지를 발생 시킨다.


2. DestroyWindow()
   - CWnd내부에 있는 윈도우를 destroy 한다.
   - 윈도우를 해제하고 입력 포커스를 제거하기 위한 적절한 message를 윈도에게 보낸다.
   - 윈도우의 메뉴 제거 
   - application queue를 비운다.
   - timer를 제거
   - Clipboard의 소유주 제거
   - Clipboard-viewer chain을 끊는다. ( CWnd가 viewer chain의 맨 위에 있을 경우 )
   - WM_DESTROY(OnDestroy)와 WM_NCDESTROY(OnNcDestroy) 메시지를 윈도우 에게 보낸다.
     하지만 아직 CWnd 객체는 destroy하지 않는다.


3. WM_DESTROY
   - Framework이 CWnd에게 현재 CWnd가 소멸되고 있는 중이라고 알려 주기 위하여 호출 
   - 화면에 윈도우를 숨긴 후 메시지 발생, 아직 윈도우 자체는 파괴되지 않았다
   - DestroyWindows() 함수에서 발생 시킨다.
   - WM_CREATE 에 반대되는 동작을 수행 한다.
   - 차일드 윈도우가 있다면 이 메시지를 차례대로 전달 한다.
   - 메인 윈도우에서 PostQuitMessage() 함수를 반드시 호출하여 프로세스의 메시지 루프
     를 종료시켜야 한다. 그렇지 않다면 윈도우만 파괴되고 메시지 루프는 계속 실행중인
     상태가 되므로 프로세스가 종료되지 않는다.


4. WM_NCDESTROY
   - Client 영역이 아닌 영역이 Destroy 될 때 Framework 에 의하여 불려짐.
   - 윈도우가 소멸될 때 마지막으로 호출되는 메시지
   - 핸들러를 재정의 한다면 기본 호출 함수를 가장 위에서 해주자.

  
5. PostNcDestroy()
   - 윈도우가 소멸된 후 OnNcDestroy() 함수에 의해 불려지는 함수
   - 사용자들이 상속받아 만든 클래스의 정리를 위한 코드를 넣음.


6. View가 닫혀질 때 호출되는 핸들러 순서
BOOL CAniView::DestroyWindow()
{
 
// TODO: Add your specialized code here and/or call the base class
// 윈도우가 안보여 지기전에 해야 할 작업 처리
 
 return CView::DestroyWindow();
 
}
 
void CAniView::OnDestroy()
{
 
  CView::OnDestroy();
 
  // TODO: Add your message handler code here
 
}
 
void CAniView::PostNcDestroy()
{
 
  // TODO: Add your specialized code here and/or call the base class
 
  CView::PostNcDestroy();
 
}


7. WM_QUIT
   - 응용프로그램을 종료 하라는 메시지
   - PostQuitMessage() 가 발생 시키는 메시지
   - GetMessage() 함수가 0 을 리턴하도록 함으로써 메시지 루프를 종료
   - PeekMessage() 함수는 따로 WM_QUIT 메시지를 점검해야 한다.



자료 출처 : http://six605.tistory.com/257

Posted by +깡통+

 static const unsigned int maxNum = 16;
 GLuint m_image[maxNum];


 error C2258: illegal pure syntax, must be '= 0'
 error C2252: 'maxNum' : pure specifier can only be specified for functions
 error C2065: 'maxNum' : undeclared identifier
 error C2057: expected constant expression
 warning C4200: nonstandard extension used : zero-sized array in struct/union


이거 하나로 에러가 무진장 생기네요.
일단 원인 파악중...
말 그대로...  정적 상수 부호없는 정수 maxNum    ㅋㅋㅋ

문제해결!!  위 코드는 VS2005 에서는 잘 돌아가지만 VC++ 6.0 에서는 안됩니다.

클래스 선언과 변수 초기화는 동시에 불가능 하기 때문인데..
열거형 초기화는 가능합니다.
그래서 아래와 같이 변경하면 잘 됩니다 ^^

enum { maxNum = 16 };




Posted by +깡통+
다시 오래간만에 VS2005 (MFC)를 하게 되었습니다.
약 2년을 쉬었는데 -_- 다시 하려니 머리가 썩었나봐요..

warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

해결방법
메뉴 -> 프로젝트 -> 속성 -> 구성속성 -> C/C++ -> 고급 -> 특정 경고 사용안함    항목에다가..

4819 라고 적어줍니다.
추가로 더 적을땐..   다음줄에 적으시던지 아래 방법으로 ^^
4819;4996
Posted by +깡통+
2011. 7. 20. 10:45


 

장마가 시작될 무렵.. 
이직을 하고 첫 출근을 했습니다.
그리고 벌써 한달이 지났네요.
종합주차관제를 하는 회사에 이직을 했습니다.
차량번호 인식하고 요금 정산하는 기술을 다루는 곳입니다.

지금까지 다루었던 언어를 활용하면서 또 새로운 언어를 배울수 있을것 같고,
재미(흥미를 유발하면서 동시에 야근이 뒤따르는..)있는 프로젝트들이 계속 이어질것 같습니다.

지금까지 하드웨어에 관심을 두고 공부를 해왔는데..
다시 소프트웨어 분야로 접어들려니 조금 섭섭하기도 하네요..

자투리 시간을 이용하여 조금씩 땜질도 계속하려고 합니다.

울 회사를 소개하자면..
개발자를 인정해주는 회사!!( 능력을 보여라! )
야근하면 수당주는 회사!!( 개발자한테?? )
장거리 출장이 잦은 회사!!( ㅠㅠ )
작은 모니터를 쓰는 회사!!( ㅠㅠ )
주 6일 근무하는 회사!!( ㅠㅠ )
뮤클을 들을 수 없는 회사!! ( ㅠㅠ )
옥상 텃밭이 있는 회사!! (점심때 마다 야채가..)

울 회사! 잘 지내봐요!

Posted by +깡통+
이전버튼 1 2 3 4 5 6 이전버튼