본문으로 바로가기
homeimage

컴퓨터/프로그래밍

해당되는 글 307
  • thumbnail
    컴퓨터/프로그래밍

    TCP/IP 전송 버퍼 빈 용량 확인하는 방법

    TCP/IP 전송 버퍼 남은 용량 확인 이유 소켓통신 중에 TCP/IP 통신은 반드시 전달해야 하는 데이터를 보내거나 대용량의 데이터를 순서에 맞추어 전송할 때 매우 유용합니다. UDP/IP를 오토바이 택배라고 한다면 TCP/IP는 컨베이어 벨트로 물건을 하나씩 전달하는 것과 비교할 수 있습니다. 오토바이 택배는 배달 사고가 날 수 있지만, 컨베이어 벨트는 좀 더 안전하게 전달할 수 있습니다. 오토바이 택배는 데이터가 많은 경우 여러 명으로 나누어서 보내다 보면 도착하는 순서가 바뀔 수 있지만, 컨베이어 벨트는 물건을 올려놓는 순서대로 상대방이 받습니다. 이렇게 TCP/IP는 전송할 데이터를 write()하면 알아서 수신자가 받아서 편한데요, 이렇게 편한 이유는 중간에 TCP 프로토콜이 열심히 일하기 때..
  • thumbnail
    컴퓨터/프로그래밍

    나도 프로그래머 크로미움 웹브라우저 만들기

    Lazarus와 CEF4Delphi 프리 파스칼로 윈도우 프로그램을 만들 수 있는 Lazarus 통합 개발 환경 프로그램에 CEF4Delphi 컴포넌트를 설치하면 크로미움 브라우저를 만들 수 있습니다. CEF4Delphi 컴포넌트의 이름에서 알 수 있듯이 Delphi에서도 사용이 가능한데요, Delphi7에는 설치하지 못했습니다. 지원하는 변수 타입 때문인데요, Delphi7 상위 버전이어야 가능한 것 같습니다. Lazarus로 크로미움을 만드는 방법을 알아보겠습니다. Lazarus에 대한 상세한 내용은 여기 링크를 참고하세요. 라자루스(lazarus) 설치 ▲ Lazarus 홈페이지에서 [Download Now] 버튼을 클릭합니다. 페이지가 바뀌면서 잠시 기다리면 컴퓨터 환경에 알맞은 설치 파일을 다운..
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 조건 컴파일 방법(Lazarus Conditional compilation)

    Lazarus Conditional compilation 라자루스에서 디버깅을 위해 DebugSever 툴로 문자열 메시지를 전송해서 출력하는 방법을 소개했는데요, 프로젝트 옵션에서 디버거 옵션을 꺼도 DebugServer로 메시지를 전송하는 SendDebug 함수는 계속 남아서 DebugServer로 전송합니다. SendDebug 함수를 겨우 몇 개 사용했다면 제거하겠지만, 여기저기 많이 사용했다면 삭제하기 어렵죠. uses dbugintf; procedure TForm1.btnCloseClick(Sender: TObject); begin SendDebug( '종료 버튼을 클릭했습니다.'); Close; end; procedure TForm1.btnCopyWindowClick(Sender: TObjec..
  • thumbnail
    컴퓨터/프로그래밍

    나도 프로그래머 라자러스 이벤트란?

    윈도우 프로그램의 이벤트 이해 오픈 소스 통합 개발 환경 라자루스의 3 번째 글입니다. 이번에는 라자루스 프로그램의 중요한 개념 중에 하나인 이벤트에 대해서 알아 보겠습니다. 이벤트는 매우 중요하지만, 내용은 쉽습니다. 이벤트 뜻 그대로 사건입니다. 이전 글의 예제를 이해하셨다면 이미 이벤트에 대해 알고 계십니다. 다만, 이벤트 단어를 사용하지 않았을 뿐입니다. ▲ 이전 글에서 만든 예제입니다. 1초마다 타이머가 발생하면 현재 시간을 Label3에 입력하도록 했습니다. 또한, Button1을 마우스로 클릭하면 프로그램이 종료됩니다. 여기서 1초마다 발생하는 타이머와 마우스 버튼을 눌러서 발생하는 클릭을 이벤트라고 합니다. 폼 위에 올려 놓은 Label, Edit, Button, Timer를 컴포넌트라고 ..
  • thumbnail
    컴퓨터/프로그래밍

    MODBUS-RTU 프로토콜 쉽게 이해하기

    MODBUS 프로토콜 이 글은 시리얼 통신을 잘 알고 있지만, MODBUS-RTU를 처음 접하는 분을 위해 저의 경험을 바탕으로 작성했습니다. 시리얼 통신을 꽤 오랫동안 다루었지만, MODBUS-RTU를 처음 접했을 때는 지금껏 사용해 오던 프로토콜하고는 느낌이 달라서 왜 이렇게 생겨 먹은 것인 지부터 이해해야 했습니다. 보통 시리얼 통신은 장비에 맞추어 작성합니다. 장비에 어떤 입출력이 있고 무엇을 제어해야 하는지와 구해야 할 정보에 따라서 프로토콜을 설계합니다. 즉, 장비와 프로젝트에 따라서 프로토콜이 바뀌고 그때마다 프로그램을 수정하거나 새로 작성합니다. [내용 추가] 모드버스는 함수에 따라 패킷 구성이 다릅니다. 함수마다 요구하는 내용이 다르기 때문이죠. 그래서 "모드버스 프로토콜 기본구성"이라는..
  • thumbnail
    컴퓨터/프로그래밍

    윈도우 프로그램 만들기 라자루스 컴포넌트 속성이란?

    Lazarus IDE component property 필요한 프로그램을 직접 만들고 싶다면 통합 개발 환경 라자루스를 추천하니다. 이전 글에서 라자루스를 소개하면서 간단한 프로그램을 작성했는데요, 자리를 잠시 비울 때 찾는 분을 위해 메시지를 남겨 놓는 프로그램이었죠. ▲ 제대로 작동은 되지만, 뭔가 어색하죠? 처음 보는 분이라면 뭐가 뭔지 이해가 안 될 것입니다. 기능에 따라서 적당한 문장을 넣어 준다면 좀 더 쉬운 프로그램이 되겠습니다. 예를 들어 Button1 보다는 "종료"라고 쓴다면 눌러보지 않아도 어떤 기능인지 알 수 있습니다. Edit1이 어떤 뜻인지 모르겠지만, 알게 되어도 글을 쓰려면 "Edit1" 글자를 지우고 써야 합니다. 이번 글에서는 라자루스에서 컴포넌트의 속성이라는 것을 이해하..
  • thumbnail
    컴퓨터/프로그래밍

    lazarus DebugServer EIPCError

    라자루스 디버그서버 실행 에러 통합개발환경 라자루스가 설치된 폴더 안에 tools 폴더에는 디버깅에 도움을 주는 DebugServer 프로그램이 있습니다. 그런데 실행하면 EIPCError이라는 에러가 발생하네요. Project FPC/Lazarus debug message server raised exception class 'EIPCError' with message: This operation is illegal when the server is active. At address 1001C5C92 ▲ FSrv.StartServer 행에서 에러가 발생합니다. 그렇다고 이 행을 삭제하면 디버그 서버 기능을 하지 못 합니다. 해결 방법은... ▲ FSrv.Active := True를 주석 처리하면 됩니다..
  • thumbnail
    컴퓨터/프로그래밍

    아리송한 MODBUS-RTU 특이점

    MODBUS-RTU 왜 이렇게 만들었을까? 통신으로 장비를 제어하는 시스템을 개발한다면 모드버스(MODBUS) 프로토콜이 편한데요, 다뤄야 할 장비가 모드버스를 지원한다면 반가울 정도입니다. 그런데 이렇게 편한 모드버스 프로토콜을 처음 접했을 때는 정말이지 왜 이렇게 만들었나 이해가 안 되는 부분이 한둘이 아니었습니다. 정리하면 이렇습니다. 시리얼 통신인데 STX·ETX가 없다? 바이트 순서가 CRC만 다르다? 읽기 함수는 레지스터 개수, 응답은 byte 개수? 레지스터와 어드레스의 시작은 0번? 1번? 32bit 데이터의 바이트 전송 순서는? MODBUS-RTU에 STX·ETX가 없다? 모드버스 통신에는 전송하는 바이트 형식에 따라 MODBUS-RTU와 MODBUS-ASCII가 있습니다. 이름에서 예상..
  • thumbnail
    컴퓨터/프로그래밍

    나도 프로그래머 라자루스 통합 개발 환경

    오픈소스 통합개발환경(IDE) 라자루스 윈도우 프로그램을 직접 만들고 싶은 분께 오픈 소스 통합 개발 환경(IDE) 라자루스를 권합니다. 프로그래밍은 전문 지식이 필요해서 매우 어렵게 생각되는데요, 라자루스는 프로그램을 쉽게 만들 수 있는 편리한 기능을 제공해서 프로그래밍의 문턱을 낮추어 줍니다. 라자루스에 대한 자세한 얘기는 밑으로 내리고 과연 라자루스로 어떻게 프로그램을 작성하는지 보겠습니다. 라자루스의 첫 번째 프로그램으로 자리를 잠시 비울 때 나를 찾는 분에게 안내 문장을 보여 주는 작은 윈도우 프로그램을 만들어 보겠습니다. 화면 가운데에 메시지를 입력할 수 있는 입력창을 넣고 그 아래에 종료 버튼을 놓겠습니다. 참고로 이 정도의 프로그램이라면 라자루스 설치에서 만들기까지 10여 분도 채 안 걸릴..
  • thumbnail
    컴퓨터/프로그래밍

    MODBUS-RTU 구현 시 주의 사항

    MODBUS-RTU 경험담 MODBUS-RTU 프로그램을 작성하면서 겪었던 경험담을 올립니다. 좀 당황스러운 일인데, 경험에 따라 생각이 다를 수 있어서 반드시 이래야 한다는 것은 아니지만, rs485 라인에 MODBUS-RTU 통신을 하는 분께 도움이 되지 않을까 해서 올립니다. 사건의 발단은 말 많고 탈 많은 rs485 통신 때문입니다. rs485 통신은 현장에 따라 희비가 극명합니다. 똑같은 시스템을 설치하는데도 어느 곳은 오전에 시작해서 오전에 끝나는데, 어떤 곳은 밤늦게까지 속을 썩입니다. rs485 통신은 장거리 통신이 가능하고 노이즈에 강하지만, 어디까지나 rs232와 비교해서입니다. rs485 통신을 이론으로만 따졌다가는 고생을 많이 하게 되는데요, 노이즈에 강한 통신이어도 현장에서는 통신..
  • thumbnail
    컴퓨터/프로그래밍

    rs485 시리얼 통신 구성 방법 및 주의 사항

    rs485 시리얼 통신 구현 방법 비교 요즘처럼 인터넷 시대에도 산업 현장에서는 rs232와 rs485 시리얼 통신을 많이 사용합니다. 거리가 멀거나 1:N 통신이 필요한 경우 rs485 통신을 사용하는데요, 한 개의 통신 라인에 여러 장치와 통신을 해야 하다 보니 다양한 아이디어가 나오고 구현 방식도 여러 가지입니다. rs485 시리얼 통신에서 프로토콜을 어떻게 구현하며 어떤 점을 주의해야 하는지 알아보겠습니다. 마스터·슬래이브 통신 rs485는 두 가닥의 라인에 여러 개의 장치를 연결하고 통신합니다. 그러므로 규칙을 정하지 않으면 장치 두 대를 연결해도 통신이 안 됩니다. 이를 해결하기 위해서는 누가 먼저 통신 라인에 패킷을 올려놓을지 규칙을 정해야 하는데, 가장 쉬운 방법은 어느 한 장치에 주도권을..
  • thumbnail
    컴퓨터/프로그래밍

    MODBUS 통신 프로그램 테스트에는 ModbusPoll 강력 추천

    MODBUS 프로토콜의 장점 장치 제어를 위한 통신 프로그램을 작성한다면 MODBUS 프로토콜을 강력하게 추천합니다. MODBUS 프로토콜이 완벽해서가 아니라 꽤 오랫동안 사용해 와서 지원하는 장비가 많고 개발에 도움을 주는 프로그램이 다양하기 때문입니다. 만일 여럿이 함께 개발하거나 다른 업체와 협업한다면 더욱 MODBUS 프로토콜을 권합니다. 통신 프로그램의 어려운 점 하나는 잘잘못을 따지는 것입니다. 서로 협의하에 프로토콜을 결정하겠지만, 문제는 각자가 프로토콜을 작성한다는 것입니다. 물론 자기가 만든 프로그램이니까 오류 없이 잘 만들었다고 생각하겠지만, 개발 단계에 버그 없는 프로그램은 거의 없습니다. 디버깅 중에 이상한 증상이 발생해서 상대방에게 얘기하면 개발자 대부분은 어떻게 테스트했는지 물어..
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.