메뉴 English Ukrainian 러시아인 홈

애호가 및 전문가를 위한 무료 기술 라이브러리 무료 기술 라이브러리


라디오 전자 및 전기 공학의 백과사전
무료 도서관 / 무선 전자 및 전기 장치의 계획

약 복용 시간을 알려주는 USB 표시기입니다. 무선전자공학 및 전기공학 백과사전

무료 기술 라이브러리

무선 전자 및 전기 공학 백과사전 / Медицина

기사에 대한 의견 기사에 대한 의견

정기적으로 약을 복용해야 하는 노인들은 처방을 스스로 준수하는 데 어려움을 겪는 경우가 많습니다. 그러나 때로는 건강뿐만 아니라 삶 자체도 의사 처방의 적시 이행에 달려 있습니다. 문제를 해결하는 일반적인 조직적 방법 외에도 기술적 수단도 사용할 수 있습니다. 여기에는 입력된 일정에 따라 매일 약 복용의 필요성을 상기시키는 신호를 제공하는 제안된 신호 장치가 포함됩니다.

많은 노년층은 분명한 이유로 최신 소프트웨어 제품을 사용하는 데 어려움을 겪고 있습니다. 신호 장치의 경우 실제로는 XNUMX~XNUMX가지 종류의 약물을 사용해도 일정에 따라 작동할 수 없고 노인이 사용하기에 인체공학적으로 적합하지 않은 다소 현대화된 알람시계가 대부분입니다.

저자가 개발한 신호 장치의 개요는 32개의 독립적인 채널(약물에 대한 세포 수에 따라)을 갖고 있으며 각 채널은 하루에 최대 1개의 알림 신호(총 XNUMX개 신호)를 제공하도록 구성할 수 있으며, 그림에 나와 있습니다. XNUMX. 복약 일정을 입력하거나 조정하기 위해 이 장치는 USB를 통해 특수 프로그램이 실행되는 컴퓨터에 연결됩니다. 일정이 로드되면 알람이 자동으로 작동합니다.

약물 타이머 USB
쌀. 1. 신호 장치의 일반 보기

신호 장치의 하드웨어와 소프트웨어 부분은 모두 시각 장애가 있는 사람을 포함하여 노인이 사용하도록 설계되었습니다. 장치 취급이 극도로 단순화되었으며 프로그램은 작업 편의성을 크게 높이는 알고리즘 및 인터페이스 솔루션을 사용합니다. 또한 신호 장치 설계 시 전기 안전 조치가 취해졌습니다.

신호 장치는 ~230V 주전원으로 전원을 공급받으며, 정전이 발생하면 자동으로 내장된 충전식 배터리의 전원으로 전환됩니다. 주전원에서 소비되는 전력은 5W를 초과하지 않으며, 800mAh의 배터리 수명은 XNUMX일에 이릅니다. 이는 장기간 정전 중에도 일정의 안전을 보장합니다.

신호 장치의 다이어그램이 그림에 나와 있습니다. 2. 작동 원리는 간단합니다. 마이크로 컨트롤러 프로그램은 매초마다 현재 시간 값을 지정된 신호 시간과 비교합니다. 일치하는 경우 장치는 여러 멜로디 중 원하는 대로 선택한 경고음이 울리고 해당 약실의 표시등이 켜집니다. 동시에 이 신호의 시간은 하루 앞으로 이동됩니다. 소리와 조명 신호를 끄려면 확인 버튼 SB1을 누르십시오.

약물 타이머 USB
쌀. 2. 신호 장치 회로(확대하려면 클릭)

신호 장치에 사용되는 ATmega8A-PU(DD1) 마이크로 컨트롤러는 2,7V로 감소된 공급 전압에서 작동할 수 있습니다. 12MHz의 마이크로컨트롤러 클록 주파수는 ZQ1 석영 공진기에 의해 설정됩니다. 사운드 신호 장치는 UMS8-08(DD2) 음악 신디사이저 칩에 조립됩니다. 마이크로 컨트롤러는 신디사이저 칩의 입력 S에 높은 레벨을 적용하여 사운드 신호를 켭니다. SB1 버튼을 누를 때까지 신호음이 계속 울립니다. 음원은 피에조 이미 터 HA1입니다. 볼륨은 가변 저항 R16에 의해 제어됩니다. 재생 중에 SB2 버튼을 누르면 멜로디가 정렬됩니다. UMS 시리즈의 마이크로 회로에 대한 자세한 내용은 [1]에 나와 있습니다.

신호 장치에는 통합 안정 장치 5의 기존 구성에 따라 조립된 다이어그램에 표시되지 않은 안정화된 전압 7805V의 변압기 소스가 있습니다. 주 전원에 정전이 발생하는 경우 장치는 GB1의 전원으로 전환됩니다. 배터리. 소비되는 평균 전류는 5mA를 초과하지 않습니다. 주전원 전압이 있는 경우 VD5, VD6, R18 회로 덕분에 배터리가 지속적으로 재충전됩니다. 하지만 한 달에 한 번씩 전원을 끄고 3V 전압까지 방전한 뒤 외부 충전기를 이용해 충전하는 전주기를 수행하는 것이 좋다.

UMS8-08 음악 신디사이저의 마이크로 회로는 UMS7 및 UMS8 시리즈의 다른 마이크로 회로로 교체할 수 있습니다. 멜로디 세트에서만 다릅니다. 저항 R3102의 저항이 3102kOhm으로 감소하면 KT3102B 트랜지스터를 KT547G, KT315E 또는 가져온 BC315뿐만 아니라 KT17B 또는 KT51G로 교체하는 것이 허용됩니다. KD522B 다이오드 대신 KD521A, KD521B, KD522A, 1N4148 및 유사한 다이오드가 적합합니다. 모든 고정 저항기 - S2-33N 또는 MLT. 산화물 커패시터 C3 및 C6 - K50-83, K50-16 또는 수입품. 나머지 커패시터는 세라믹 K10-73-1b, K10-17v입니다. 원하는 글로우 색상의 직경이 5mm인 경우 모든 LED가 적합합니다. 저자 버전에서는 환자를 헛되이 방해하지 않도록 녹색 LED가 HL1로 설치되고 나머지는 빨간색입니다. 커넥터 XS1 - USB-BF 소켓.

GB1 배터리는 80omAh 용량의 AA 크기 Ni-Mh 배터리 18개로 구성됩니다. 다른 용량의 배터리를 사용할 수 있지만 3V 전압으로 방전된 배터리의 초기 충전 전류가 공칭 용량의 0,1과 수치적으로 동일하도록 저항의 저항 RXNUMX을 선택하는 것이 바람직합니다.

신호 장치는 천공 피치가 70mm이고 크기가 50x2,54mm인 표준 천공 장착 플레이트에 조립됩니다. 장착 방법 - 핫멜트 접착제 고정 방식으로 힌지 연결됩니다. 회로의 단순성으로 인해 인쇄 배선은 사용되지 않았습니다. HL2-HL9 LED를 제외한 장치의 모든 요소는 67x80x80mm 크기의 IP40 플라스틱 전기 접속 상자에 배치됩니다.

커넥터 XS1은 작은 인쇄 회로 기판에 있으며 그 앞에는 상자 벽에 적절한 크기의 구멍이 잘려져 있습니다. HA1, HL1, GB1, R16, SB1 요소는 뜨거운 접착제로 상자 뚜껑에 고정됩니다. 조작 컨트롤과 관련이 없는 SB2 버튼은 회로 기판에 있습니다. 그림에. 그림 3은 정션 박스 내부의 회로 기판과 원격 요소의 상대적 위치를 보여줍니다.

약물 타이머 USB
쌀. 3. 정션 박스 내부의 회로 기판과 원격 요소의 상호 배치

의약품은 서랍이 있는 112개의 셀로 구성된 일반적인 무선 구성 요소용 카세트에 배치됩니다. 각 셀의 크기는 55x120x224mm입니다. 카세트 홀더의 전체 크기는 110x120xXNUMXmm입니다. 세포가 밀폐되어 있지는 않지만 용량이 꽤 크기 때문에 의약품은 원래 포장에 보관해야 합니다. 카세트 홀더는 특정 유형의 의약품을 보관하는 데 필요한 빛으로부터 보호 기능도 제공합니다. 셀의 전면 패널에는 의약품 이름이 적힌 정제용 홈이 제공됩니다.

정션박스는 M3 나사와 너트로 카세트의 왼쪽 벽에 고정되어 있습니다. LED HL2-HL9는 각 셀의 전면 패널에 하나씩 위치하며 셀 내부의 PVC 튜브에 배치되고 카세트 뒷면에 묶인 유연한 와이어로 장치에 연결됩니다. LED로 연결되는 각 전선 쌍의 길이 여유는 셀이 완전 개방 상태의 75 ~ 80%까지 자유롭게 확장되도록 보장해야 합니다.

기사에 첨부된 USB_HID_Note.hex 파일은 마이크로 컨트롤러의 프로그램 메모리에 로드되어야 합니다. 마이크로컨트롤러의 구성은 표에 표시된 것과 일치해야 합니다. 1. 올바르게 조립된 장치에는 조정이 필요하지 않습니다. 원하는 LED 밝기는 저항 R5-R10를 선택하여 7 ... 15 mA 내에서 전류를 변경하여 설정할 수 있습니다.

표 1

방전 상태
CKOPT 0
CKSEL [3 : 0] 1111
SUT [1 : 0] 10
보덴 1
W.D.E. 1
RSTDISBL 1

USB 사양의 관점에서 볼 때 이 장치는 잘 알려진 AVR V-USB 드라이버[2]를 기반으로 한 USB 인터페이스의 소프트웨어 구현을 통해 HID 클래스[3]에 속합니다. 이 경우 사양에 따라 인터페이스 라인 D-와 V 사이에 연결된 저항을 사용하여 인터페이스를 저속 USB 1.1 모드로 전환해야 함을 상기시켜 드리겠습니다.버스 (이 경우 저항 R4입니다).

다이오드 VD1 및 VD2를 통해 마이크로 컨트롤러를 저전압 전원 공급 장치와 연결하는 일반적인 옵션 중 하나가 사용되었습니다. 배터리가 있음에도 불구하고 이러한 다이오드를 사용하는 것이 바람직합니다. USB 버스와 마이크로 컨트롤러의 논리 레벨을 일치시키는 데 배터리 전압의 영향을 배제하기 때문입니다.

마이크로컨트롤러는 V-USB에 허용되는 숫자 중 하나인 12MHz의 클록 속도로 작동합니다. 해당 프로그램은 AVR Studio 4 개발 환경에서 C로 작성되었으며, 프로그램 텍스트(파일 main.c)에는 자세한 설명이 포함되어 있습니다. vusb-20100715 드라이버 릴리스[4]와 WinAVR-20100110 컴파일러[5]가 사용되었습니다.

V-USB 라이브러리는 잘 문서화되어 있으므로 여기서는 프로젝트 구현이나 해당 기능과 직접적으로 관련된 측면만 고려합니다. V-USB 라이브러리를 기반으로 프로그램을 생성하는 단계별 프로세스는 [6]에 자세히 설명되어 있습니다.

AVR Studio에서 프로그램을 만들 때 주의해야 할 주요 사항은 다음과 같습니다.

- V-USB 아카이브의 usbdrv 폴더에 있는 모든 파일을 프로젝트 폴더에 복사해야 합니다.

- usbdrv.c, usbdrvasm.S,odebug.c 파일을 AVR Studio 프로젝트에 추가해야 합니다(프로젝트 트리의 "기존 소스 파일 추가..." 컨텍스트 메뉴 항목을 통해).

- 프로젝트 설정(프로젝트 → 구성 옵션 → 일반 → 주파수, Hz)에서 마이크로컨트롤러의 클록 주파수는 12000000Hz와 동일하게 설정되어야 합니다. 이 값을 기반으로 AVR Studio는 컴파일러에 대해 V-USB가 사용하는 F_CPU 상수를 결정합니다.

필요한 V-USB 구성은 usbconfig.h 파일에 포함되어 있으며 이 파일도 프로젝트 폴더에 있어야 합니다. 표준 구성 파일은 기사에 첨부된 파일로 대체되어야 합니다. 테이블에. 2에는 이 파일에 정의된 가장 중요한 상수가 나열되어 있습니다. USB HID 장치를 자유롭게 개발할 수 있는 능력은 중요한 점과 관련이 있습니다. 즉, V-USB 라이브러리[3]의 USB-IDs-for-free.txt 문서에 따라 VID/PID 식별자 쌍을 사용해야 합니다.

표 2

상수 가치 내용
USB CFG IO포트 이름 D 버스 연결 포트
USB CFG D마이너스 비트 4 D-라인이 연결된 포트의 비트
USBCFGDPLUSBIT 2 D+ 라인이 연결된 포트의 비트(INTO 인터럽트 입력에 연결되어야 함)
USB CFG 인터페이스 클래스 3(HID) 장치 클래스
USB CFG 최대 버스 전력 100 USB 버스의 최대 전류 소비. 엄마
USB CFG HID 보고서 설명자 길이 22 * HID 보고서 설명자 길이
USB CFG 공급업체 ID 옥스코, 0x16 기기 제조업체 ID
USB CFG 장치 ID 0xDF, 05xXNUMX 제품 ID

*) 이 값은 프로그램의 PROGMEM usbHidReportDescriptor 문자 배열 크기와 동일해야 합니다.

프로그램은 UNIX 시간 형식을 사용합니다. 여기서 시간 값은 00년 00월 00일 01.01.1970:XNUMX:XNUMX UTC 이후 경과한 초 수입니다. pdata 변수는 타임스탬프(XNUMX바이트 UNIX 타임스탬프)를 전달하는 데 사용됩니다.

하루에 제공되는 최대 신호 수는 프로그램에서 NUM_CALLS 상수로 지정됩니다. NUM_CALLS+1 크기의 u_time 배열은 시간 값을 저장하는 데 사용됩니다. 이 경우 u_time[NUM_CALLS] 배열의 요소에는 현재 시간이 포함되고 나머지에는 신호 시간이 포함됩니다. 각 채널(약물 카세트의 셀)에는 0개의 배열 요소가 있습니다. 예를 들어, 첫 번째 셀은 u_time[3]부터 u_time[4]까지의 요소이고, 두 번째 셀은 u_time[7]부터 u_time[XNUMX]까지의 요소입니다. 배열 요소 값이 XNUMX과 같으면 해당 신호가 고려됩니다. 비활성. 이 접근 방식을 통해 정보 전송 및 처리 알고리즘을 단순화할 수 있습니다.

패키지 구조와 usbFunctionWrite 및 usbFunctionRead 정보 전송 절차를 설명하는 설명자는 표준 솔루션을 기반으로 합니다. 기본 기능은 [3]의 헤더 파일 usbdrv.h에 자세히 설명되어 있습니다. 처리된 채널 수를 확인하기 위한 조건이 절차에 추가됩니다. 컴퓨터가 동기화를 위해 항상 현재 시간을 전송하기 때문에 장치가 컴퓨터에서 받은 배열 요소의 수는 보낸 것보다 XNUMX개 더 많습니다.

main() 프로시저의 시작 부분에서 I/O 레지스터가 구성되고, 클럭 주파수 분할 요소가 256으로 설정되고, 타이머 레지스터 TCNT1에 1초의 시간 간격을 형성하는 데 필요한 숫자가 로드됩니다. 타이머 오버플로 인터럽트는 기본적으로 비활성화되어 있습니다.

그 후 프로그램은 메인 루프로 들어갑니다. USB 연결이 없으면 전역 및 타이머 1 오버플로 인터럽트가 활성화됩니다. for 루프에서 86400이 아닌 값을 가진 u_time[i] 배열의 각 요소가 현재 시간과 같은지 확인합니다. 일치하는 항목이 발견되면 해당 셀의 사운드 신호와 LED가 켜지고 이 채널의 응답 시간이 XNUMX초(일당)씩 늘어납니다.

그런 다음 입력 PB0에서 레벨을 확인합니다. 낮은 경우(신호 수신을 확인하기 위해 버튼 SB1을 누름) 모든 출력은 낮은 논리 레벨로 설정되어 신호가 꺼집니다.

이와 병행하여 매초 타이머 1의 오버플로 시 인터럽트 처리 절차 TIMER1_OVF_vect가 시작됩니다. TCNT1 카운터 사전 설정을 복원하고, u_time[NUM_CALLS] 배열 요소의 현재 시간 값을 증가시키고, PB1 출력의 상태를 변경합니다(연결된 HL1 LED가 2초 간격으로 깜박임).

장치가 USB에 연결되면 PC5 입력은 USB 버스의 Vbus 라인에서 높은 레벨을 수신합니다. 이 경우 if (PINC & (1<<5)) 조건은 타이머 1 오버플로 인터럽트를 비활성화하고 V-USB 드라이버를 활성화합니다. HL1 LED가 켜지고 계속 켜져 있습니다.

V-USB 드라이버를 활성화하면 USB를 통해 정보를 교환할 수 있게 됩니다. usbPoll() 함수는 루프에서 호출되어 정보 교환이 없을 때 인터페이스를 활성 상태로 유지합니다. 정보 전송 프로세스는 컴퓨터 프로그램에 관한 기사 섹션에 자세히 설명되어 있습니다.

USB_HID_Note 신호 장치에 일정을 입력하기 위한 컴퓨터 프로그램을 고려해 보겠습니다. 메인 창(그림 4)에서 볼 수 있듯이, 개발 과정에서 노년층 사용자가 쉽게 사용할 수 있도록 인터페이스를 최적화하는 데 특별한 주의를 기울였습니다. 이 프로그램은 Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008에서 실행됩니다. Windows 10 및 Windows Server 2012에서는 테스트되지 않았지만 제대로 작동할 것이라고 믿을 만한 이유가 있습니다.

약물 타이머 USB
쌀. 4. 신호 장치에 일정을 입력하기 위한 컴퓨터 프로그램의 메인 창

컴퓨터에 어넌시에이터를 연결한 상태에서 프로그램을 실행한 후 화면의 버튼을 누릅니다. "연결하기". 연결 시도 결과를 나타내는 메시지가 표시됩니다. 성공하면 화면 버튼을 사용할 수 있게 됩니다. "모두 읽기" 그리고 "구하다".

일정을 입력하려면 첫 번째 드롭다운 목록(선택기)에서 셀 번호를 선택하고 두 번째 목록에서 이 셀의 신호 번호를 선택하면 충분합니다. 그런 다음 원하는 신호 시간을 설정하고 숫자 왼쪽에 있는 확인란을 클릭하여 선택한 셀과 신호 조합을 활성화하거나 비활성화하고(플래그 색상 변경) 사용 가능한 유일한 줄에 약물 이름을 적습니다. 약물 이름은 세포 번호와 연결되어 있으므로 첫 번째 선택기가 전환될 때만 줄의 내용이 변경됩니다. 활성화 플래그는 선택한 셀 번호와 신호 번호의 조합을 나타냅니다.

따라서 필요한 모든 셀을 채우십시오. 셀의 기본 상태는 꺼져 있으므로 모두 활성화할 필요가 없습니다. 필요한 경우 셀 설정을 변경할 수 있습니다. 입력된 값은 동적으로 저장됩니다.

화면상의 버튼을 누르면 일정은 신호 장치로 전송되고 구성 파일에 기록됩니다. 전송 결과에 메시지가 표시됩니다. 감지기에 저장된 일정은 화면의 버튼을 눌러 감지기에서 읽을 수 있습니다. . 그 후에는 프로그램 창에서 볼 수 있고, 필요한 경우 편집한 다음 탐지기에 다시 로드할 수 있습니다. 화면 버튼을 누르면 해당 창에 있는 약의 이름을 지워서 다른 약을 쓸 수 있게 해줍니다.

신호 장치의 중요한 기능은 USB에 연결하면 현재 시간의 타이머가 중지된다는 것입니다. 컴퓨터 프로그램을 닫는 순간 일정과 현재 시간이 자동으로 신호 장치에 기록됩니다(동기화). 따라서 프로그램을 닫은 후에는 실제 시간과 "시스템" 시간 간의 차이를 최소화하기 위해 가능한 한 빨리 신호 장치에서 USB 케이블을 분리해야 합니다.

그러나 이 경우 몇 분의 차이도 중요하지 않으므로 이 기능을 제거하기 위한 조치가 취해지지 않았습니다. USB_HID_Note 프로그램이 완료된 후 신호 장치가 실수로 오랫동안 컴퓨터에 연결되어 있는 경우 이 프로그램을 다시 시작하면 충분합니다. 화면 버튼을 누르세요. , 그런 다음 그리고 바로 거기에서 아니면 그냥 프로그램을 닫으세요. 표시기에 의해 올바른 타이밍이 복원된 후 USB 케이블을 분리할 수 있습니다.

약물 이름은 프로그램 구성 파일에 저장되며 신호 장치가 연결되면 컴퓨터 화면에 표시됩니다. 프로그램에 일정을 입력하는 것과 함께 카세트 홀더의 각 셀에 적절한 문구가 적힌 태그가 제공되는지 확인하는 데 주의를 기울여야 합니다.

USB_HID_Note 프로그램은 Qt 5.3.2 프로그래밍 환경에서 C++로 작성되었습니다. 이 환경을 선택한 이유는 인터페이스 솔루션의 유연성과 결합되어 모든 수준의 애플리케이션을 생성하고 디버깅할 수 있는 무료, 크로스 플랫폼, 광범위한 기능 및 고유한 내장 도구 때문입니다. 애플리케이션의 구현 유형은 Qt Widget입니다. 위젯 소스 코드 - widget.cpp 파일. 전체 프로젝트는 기사에 첨부된 USB_HID_Note_ pro.zip 아카이브로 컴파일됩니다.

프로그램의 특징은 SetupAPI 및 HID 라이브러리의 기능을 직접 호출하는 것입니다. 따라서 컴파일이 수행되는 컴퓨터에는 운영 체제 버전에 해당하는 setupapi.lib 및 hid.lib 파일이 있어야 합니다. 이러한 파일은 일반적으로 WinDDK에 포함되어 있습니다. 전체 WinDDK 패키지를 완전히 설치할 필요가 없도록 작성자는 WinDDK 7600의 다양한 버전 파일을 에디션의 FTP 서버에서 사용할 수 있는 하나의 winddk_libs 폴더로 수집합니다. 컴파일 및 디버깅은 Windows 16385.1, Windows Server 7 R2008, Windows Vista SP2, Windows Server 1 SP2003, Windows XP SP1 이상에서 수행할 수 있습니다. .pro 파일은 표와 같이 라이브러리에 대한 전체 경로를 명시적으로 지정해야 합니다. 삼.

표 3

약물 타이머 USB

구성 파일(.cfg) 및 스타일(.qss)과 함께 프로그램의 컴파일된 실행 파일은 기사에 첨부된 USB_HID_Note 폴더에 있습니다. 필요한 Qt 동적 라이브러리(.dll 파일)도 여기에 있습니다. 아시다시피 이 요구 사항은 Qt로 개발된 모든 애플리케이션에 필수입니다. 고려 중인 사례에 대한 이러한 라이브러리 목록이 표에 나와 있습니다. 4.

표 4

약물 타이머 USB

모든 라이브러리는 ..5.3mingw482_32pluginsplatforms에서 복사되어 프로그램 작업 폴더의 적절한 하위 폴더에 배치되는 마지막 두 개를 제외하고 폴더의 ..ToolsQtCreator에서 복사됩니다. 프로그램이 컴파일된 컴퓨터에서 프로그램의 작업 폴더 또는 시스템 폴더로 직접 복사할 수도 있습니다(아카이브 크기 - 126MB, 압축 풀기 - 400MB).

프로그램 알고리즘은 [7]에 제공된 표준 솔루션을 기반으로 합니다. 구현 기능은 우선 다양한 프로그래밍 언어의 사용과 관련됩니다(소스 Delphi 및 C#에 설명된 것과 대조). HID API 및 SetupAPI 기능을 사용하려면 각각 hidsdi.h 및 setupapi.h 헤더 파일을 포함해야 합니다.

화면 버튼 클릭 핸들러는 on_Connect Button_clicked() 프로시저입니다. 먼저, 드라이버 함수 HidD_GetHidGuid는 HID와 연결된 GUID를 결정합니다. 그런 다음 SetupAPI 함수가 호출되어 인터페이스 열거자를 만들고 장치의 HID 이름을 가져옵니다. 이에 대한 자세한 내용은 p.7의 [333]에 설명되어 있습니다. XNUMX. 이 경우, 제품명이나 일련번호를 확인하는 기능을 의도적으로 사용하지 않습니다. VID/PID 쌍만 확인됩니다. 이는 장치의 상업적 사용 가능성을 피하기 위해 수행됩니다. VID/PID 값은 global_vars.h 파일의 Dev_VID_PID 상수에 의해 설정됩니다.

장치가 검색되면 제어권이 HID 드라이버로 다시 전송됩니다. CreateFile 함수는 핸들을 요청하고, HidD_GetPreparsedData는 장치 매개변수에 대한 정보가 포함된 버퍼에 대한 포인터를 반환하며, HidP_GetCaps는 이러한 매개변수 값이 포함된 구조를 반환합니다.

프로그램에서 보고서 크기를 직접 할당하는 일반적으로 사용되는 방법과 달리 여기서 해당 값은 설명자에서 얻은 Caps.FeatureReportByteLength 구조의 요소에 의해 결정됩니다. 이를 통해 장치 설명자의 보고서 크기가 변경될 때 프로그램을 변경하고 다시 컴파일할 필요가 없는 보다 보편적인 솔루션을 만들 수 있습니다.

실제 정보 교환은 셀 수에 따라 주기적으로 해당 data_read() 및 data_transfer() 프로시저에서 호출되는 HidD_Get Feature(읽기) 및 HidD_SetFeature(쓰기) 함수를 사용하여 발생합니다. 이미 언급한 바와 같이, 신호 발생기가 수신한 배열 요소의 수는 전송된 것보다 XNUMX개 더 많습니다. 컴퓨터는 항상 동기화를 위해 현재 시간을 전송하기 때문입니다.

가장 중요한 절차의 목적을 설명하는 자세한 설명은 프로그램 텍스트에서 확인할 수 있습니다. 나머지 프로시저의 목적은 표준이거나 직관적입니다. 예를 들어 on_comboBox_ currentIndexChanged() - 콤보박스 인덱스 변경 이벤트 핸들러입니다. 주석 처리된 qDebug 행과 해당 행은 프로그램 디버깅에만 사용되었습니다. 내장된 Qt 디버거 창에서 디버깅하고 정보 교환 진행 상황을 확인해야 하는 경우 이러한 모든 지침의 주석 처리를 제거해야 합니다.

프로그램은 settings.cfg 파일에 일반 구성을 저장합니다. 일반 텍스트 형식이므로 필요한 경우 수동으로 편집할 수 있습니다. [일반] 섹션에는 셀 수 NUM_BOX=8 및 셀당 신호 수 NUM_BOX_CALL=4가 포함되어 있으며, [보기] 섹션에서는 화면의 프로그램 창 위치가 정수로 설정됩니다. [names] 섹션에는 셀별 약물 ​​이름이 포함되고, [used] 섹션에는 셀 활동 플래그가 포함되며, [times] 섹션에는 UNIX 타임스탬프 형식의 응답 시간 값이 포함됩니다. 후자는 작동 값이 신호 장치의 마이크로 컨트롤러 메모리에 있기 때문에 주로 정보 제공용입니다. 파일을 수동으로 편집할 때 이름 매개변수가 C/C++/Java 소스 코드 형식(예: u3256)이라는 점에 유의하세요.

결론적으로 장치에서 제공하는 신호 수를 독립적으로 변경하려는 사람들을 위한 몇 가지 권장 사항이 있습니다. 셀 개수가 고정되어 있으면 셀당 신호 개수는 상대적으로 변경되기 쉽습니다. 마이크로컨트롤러 프로그램에서는 이를 위해 먼저 NUM_CALLS 상수를 변경해야 합니다. 그 값은 셀 수와 셀당 최대 신호 수를 곱한 것과 같아야 합니다. 기사에서 고려한 경우에는 8x4=32와 같습니다. 둘째, switch...case... 프로시저에서 각 줄의 Case 문의 수는 셀당 신호 수와 동일해야 합니다. 이 경우 Case 문의 인수는 0부터 NUM_CALLS-1까지 연속적인 시퀀스를 형성해야 합니다. 함수 본문과 break 문은 변경되지 않습니다. 그런 다음 프로그램을 저장하고 다시 컴파일해야 합니다.

컴퓨터 프로그램에는 조정이 필요하지 않습니다. settings.cfg 파일에서 NUM_BOX_CALL 상수(셀당 신호 수) 값을 변경하면 충분합니다. 이는 마이크로컨트롤러의 프로그램을 엄격히 준수해야 합니다.

마이크로컨트롤러 및 컴퓨터용 프로그램은 ftp://ftp.radio.ru/pub/2017/01/signal.zip에서 다운로드할 수 있습니다.

문학

  1. Drinevsky V., Sirotkina G. UMS 시리즈의 음악 신디사이저. - 라디오, 1998, No. 10, p. 85.
  2. 범용 직렬 버스. HID 정보. - URL: usb.org/developers/hidpage/.
  3. V USB. - URL: obdev.at/products/vusb/index.html.
  4. 드라이버 archivevusb-20100715. - URL: obdev.at/downloads/vusb/vusb-20100715.tar.gz.
  5. 컴파일러 WinAVR-20100110. - URL: sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-201 0 0110-install.exe/download.
  6. AVR용 USB. 2부. V-USB의 HID 클래스. - URL: we.easyelectronics.ru/electro-and-pc/usb-dlyaavr-chast-2-hid-class-na-v-usb.html.
  7. Agurov P. USB 프로그래밍 실습. - S.-Pb.: "BHV-Petersburg", 2006.

저자: D. 판크라티예프

다른 기사 보기 섹션 Медицина.

읽고 쓰기 유용한 이 기사에 대한 의견.

<< 뒤로

과학 기술의 최신 뉴스, 새로운 전자 제품:

정원의 꽃을 솎아내는 기계 02.05.2024

현대 농업에서는 식물 관리 과정의 효율성을 높이는 것을 목표로 기술 진보가 발전하고 있습니다. 수확 단계를 최적화하도록 설계된 혁신적인 Florix 꽃 솎기 기계가 이탈리아에서 선보였습니다. 이 도구에는 이동식 암이 장착되어 있어 정원의 필요에 맞게 쉽게 조정할 수 있습니다. 운전자는 조이스틱을 사용하여 트랙터 운전실에서 얇은 와이어를 제어하여 얇은 와이어의 속도를 조정할 수 있습니다. 이 접근 방식은 꽃을 솎아내는 과정의 효율성을 크게 높여 정원의 특정 조건은 물론 그 안에 자라는 과일의 종류와 종류에 대한 개별 조정 가능성을 제공합니다. 다양한 유형의 과일에 대해 2년 동안 Florix 기계를 테스트한 후 결과는 매우 고무적이었습니다. 몇 년 동안 Florix 기계를 사용해 온 Filiberto Montanari와 같은 농부들은 꽃을 솎아내는 데 필요한 시간과 노동력이 크게 감소했다고 보고했습니다. ...>>

고급 적외선 현미경 02.05.2024

현미경은 과학자들이 눈에 보이지 않는 구조와 과정을 탐구할 수 있도록 함으로써 과학 연구에서 중요한 역할을 합니다. 그러나 다양한 현미경 방법에는 한계가 있으며, 그 중 적외선 범위를 사용할 때 해상도의 한계가 있습니다. 그러나 도쿄 대학의 일본 연구자들의 최근 성과는 미시세계 연구에 새로운 가능성을 열어주었습니다. 도쿄 대학의 과학자들은 적외선 현미경의 기능에 혁명을 일으킬 새로운 현미경을 공개했습니다. 이 첨단 장비를 사용하면 살아있는 박테리아의 내부 구조를 나노미터 규모의 놀라운 선명도로 볼 수 있습니다. 일반적으로 중적외선 현미경은 해상도가 낮다는 한계가 있지만 일본 연구진의 최신 개발은 이러한 한계를 극복했습니다. 과학자들에 따르면 개발된 현미경은 기존 현미경의 해상도보다 120배 높은 최대 30나노미터 해상도의 이미지를 생성할 수 있다고 한다. ...>>

곤충용 에어트랩 01.05.2024

농업은 경제의 핵심 부문 중 하나이며 해충 방제는 이 과정에서 필수적인 부분입니다. 심라(Shimla)의 인도 농업 연구 위원회-중앙 감자 연구소(ICAR-CPRI)의 과학자 팀은 이 문제에 대한 혁신적인 해결책, 즉 풍력으로 작동되는 곤충 공기 트랩을 생각해냈습니다. 이 장치는 실시간 곤충 개체수 데이터를 제공하여 기존 해충 방제 방법의 단점을 해결합니다. 트랩은 전적으로 풍력 에너지로 구동되므로 전력이 필요하지 않은 환경 친화적인 솔루션입니다. 독특한 디자인으로 해충과 익충을 모두 모니터링할 수 있어 모든 농업 지역의 개체군에 대한 완전한 개요를 제공합니다. "적시에 대상 해충을 평가함으로써 우리는 해충과 질병을 모두 통제하는 데 필요한 조치를 취할 수 있습니다"라고 Kapil은 말합니다. ...>>

아카이브의 무작위 뉴스

세계 해양이 새로운 온도 기록을 세웠습니다. 05.08.2023

유럽연합 기후 관측소(European Union Climate Observatory)가 입수한 데이터에 따르면, 세계 해양 온도가 20,96°C로 상승해 새로운 기록을 세웠습니다. 이는 20,95년 2016월 기록된 종전 최고 기록인 21,06℃를 넘어선 수치이다. 극지방을 제외했음에도 미국 국립해양대기청(NOAA)도 비슷한 추세를 보였다. 4월 21,01일 평균 해수면 온도는 2016℃로 종전 최고치인 XNUMX년 XNUMX월의 XNUMX℃를 넘어섰다.

과학자들은 과열된 해양이 해양 생태계와 해안 지역 사회에 심각한 영향을 미칠 수 있다고 경고합니다. 더욱이 바다는 주로 화석 연료의 연소로 인해 인간 활동으로 인해 발생하는 과도한 열의 90%를 이미 흡수했습니다. 대기 중 온실가스의 축적은 이 과정을 계속해서 강화시킵니다.

이러한 상승 추세는 장기적인 결과를 가져오며 잠재적으로 특정 종의 이동 패턴에 영향을 미치고 침입성 유기체의 확산을 촉진합니다. 그러한 변화는 세계 여러 지역의 수산자원과 식량안보를 위험에 빠뜨릴 수 있습니다.

또한, 해수 온도 상승은 지구의 이산화탄소(CO2) 흡수 능력을 위협해 지구 온난화가 심화되는 악순환을 낳습니다. 해수 온도 상승을 동반하는 최근 엘니뇨 현상은 이제 막 시작되었으며 이러한 과정은 더욱 심화될 가능성이 높습니다.

현재 엘니뇨의 최악의 영향은 2023년 말까지 가시화되고 다음 해에도 계속될 것으로 예상됩니다. 단기적 요인이 영향을 미칠 수 있지만, 해양 온도 상승의 주요 장기 원인은 의심할 여지 없이 인간 활동, 특히 화석 연료 연소로 인한 온실가스 축적입니다.

이러한 놀라운 추세는 전 세계적으로 수많은 기록이 나오는 가운데 나타납니다. 예를 들어, 미국 플로리다에서는 해안에서 38,3°C의 기온이 기록되었는데, 이는 지점 측정에 있어서 세계 기록일 수 있습니다. 북대서양 표층수 평균 기온도 24,9°C로 사상 최고치를 기록해 이맘때의 이전 수치를 넘어섰다.

기후변화에 관한 정부간 패널(IPCC)의 2019년 보고서에 따르면 지중해는 평균 기온 28,71°C로 1982월 중 가장 더운 날을 기록했습니다. 해양 열파의 빈도는 2100년 이후 두 배로 증가했으며, 이는 오염 물질 배출을 줄여야 할 필요성이 강조되거나 20년까지 XNUMX세기 초반에 비해 위험이 XNUMX배 더 강해질 것이라는 점을 강조합니다.

다른 흥미로운 소식:

▪ 플라나 하이브리드 전기 에어택시

▪ 실리콘 위의 반도체 레이저의 질적 성장

▪ 초박형 플렉시블 스크린을 위한 3원자 두께의 LED

▪ 인간의 뇌를 모방한 시냅스 트랜지스터

▪ 구글, 자체 태블릿 출시

과학 기술 뉴스 피드, 새로운 전자 제품

 

무료 기술 라이브러리의 흥미로운 자료:

▪ 사이트 펌웨어 섹션. 기사 선택

▪ 기사 부주의. 대중적인 표현

▪ 기사 대담 자의 거짓말을 알 수 있습니까? 자세한 답변

▪ 기사 수석 디자이너. 업무 설명서

▪ 기사 avometer로 주파수 측정. 무선 전자 및 전기 공학 백과사전

▪ 기사 더블월 페이퍼백. 초점 비밀

이 기사에 대한 의견을 남겨주세요:

이름 :


이메일(선택사항):


댓글 :





이 페이지의 모든 언어

홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰

www.diagram.com.ua

www.diagram.com.ua
2000-2024