Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное программирование. Учебное пособие-1
.pdf
Ɉ ɤ ɨ ɧ ɱ ɚ ɧ ɢ ɟ ɬ ɚ ɛ ɥ ɢ ɰ ɵ Ⱥ.5
Ʉɨɧɫɬɚɧɬɚ Ɂɧɚɱɟɧɢɟ Ɉɩɢɫɚɧɢɟ
DBL_MAX 1ȿ+37
DBL_MAX_EXP
DBL_MIN 1ȿ-37
DBL_MIN_EXP
ɇɚɢɛɨɥɶɲɟɟ ɱɢɫɥɨ ɫ ɩɥɚɜɚɸɳɟɣ
ɬɨɱɤɨɣ
Ɇɚɤɫɢɦɚɥɶɧɨɟ n – ɬɚɤɨɟ, ɱɬɨ FLT_RADIX
ɩɪɟɞɫɬɚɜɢɦɨ ɜ ɜɢɞɟ ɱɢɫɥɚ ɬɢɩɚ double
ɇɚɢɦɟɧɶɲɟɟ ɧɨɪɦɚɥɢɡɨɜɚɧɧɨɟ ɱɢɫɥɨ
ɫ ɩɥɚɜɚɸɳɟɣ ɬɨɱɤɨɣ
Ɇɢɧɢɦɚɥɶɧɨɟ n – ɬɚɤɨɟ, ɱɬɨ 10
ɩɪɟɞɫɬɚɜɢɦɨ ɜ ɜɢɞɟ ɧɨɪɦɚɥɢɡɨɜɚɧɧɨɝɨ
n
-1
n
ɱɢɫɥɚ ɬɢɩɚ double
Ⱥ.8. Ȼɢɛɥɢɨɬɟɤɢ ɞɚɬɵ ɢ ɜɪɟɦɟɧɢ
ȼ ɡɚɝɨɥɨɜɨɱɧɨɦ ɮɚɣɥɟ time.h ɨɛɴɹɜɥɟɧɵ ɬɢɩɵ ɢ ɮɭɧɤɰɢɢ ɞɥɹ ɪɚɛɨɬɵ ɫ
ɞɚɬɨɣ ɢ ɜɪɟɦɟɧɟɦ. ɇɟɤɨɬɨɪɵɟ ɮɭɧɤɰɢɢ ɪɚɛɨɬɚɸɬ ɫ ɦɟɫɬɧɵɦ ɜɪɟɦɟɧɟɦ, ɤɨɬɨɪɨɟ
ɦɨɠɟɬ ɨɬɥɢɱɚɬɶɫɹ ɨɬ ɤɚɥɟɧɞɚɪɧɨɝɨ ɜɪɟɦɟɧɢ, ɧɚɩɪɢɦɟɪ, ɜ ɫɜɹɡɢ ɫ ɱɚɫɨɜɵɦɢ ɩɨɹɫɚɦɢ. Ɉɩɪɟɞɟɥɟɧɵ ɚɪɢɮɦɟɬɢɱɟɫɤɢɟ ɬɢɩɵ clock_t ɢ time_t ɞɥɹ ɩɪɟɞɫɬɚɜɥɟɧɢɹ ɜɪɟɦɟɧɢ, ɚ ɫɬɪɭɤɬɭɪɚ struct tm ɫɨɞɟɪɠɢɬ ɤɨɦɩɨɧɟɧɬɵ
ɤɚɥɟɧɞɚɪɧɨɝɨ
ɜɪɟɦɟɧɢ.
ȼ ɬɚɛɥɢɰɟ Ⱥ.6 ɩɪɢɜɟɞɟɧɵ ɩɟɪɟɦɟɧɧɵɟ ɛɢɛɥɢɨɬɟɤɢ ɞɚɬɵ ɢ ɜɪɟɦɟɧɢ.
Ɍ ɚ ɛ ɥ ɢ ɰ ɚ Ⱥ.6
ɉɟɪɟɦɟɧɧɵɟ ɞɚɬɵ ɢ ɜɪɟɦɟɧɢ
ɉɟɪɟɦɟɧɧɚɹ ɑɬɨ ɯɪɚɧɢɬ
int tm_sec ɋɟɤɭɧɞɵ ɨɬ ɧɚɱɚɥɚ ɦɢɧɭɬɵ (0,61)
int tm_min Ɇɢɧɭɬɵ ɨɬ ɧɚɱɚɥɚ ɱɚɫɚ (0,59)
int tm_hour ɑɚɫɵ ɨɬ ɩɨɥɭɧɨɱɢ (0,23)
int tm_mday ɑɢɫɥɨ ɦɟɫɹɰɚ (1,31)
int tm_mon Ɇɟɫɹɰɵ ɩɨɫɥɟ ɹɧɜɚɪɹ (0,11)
int tm_year Ƚɨɞɵ ɫ 1900
int tm_wday Ⱦɧɢ ɫ ɜɨɫɤɪɟɫɟɧɶɹ (0,6)
int tm_yday Ⱦɧɢ ɫ 1 ɹɧɜɚɪɹ (0,365)
int tm_isdst ɉɪɢɡɧɚɤ ɥɟɬɧɟɝɨ ɜɪɟɦɟɧɢ
ɉɨɥɟ tm_isdst ɢɦɟɟɬ ɩɨɥɨɠɢɬɟɥɶɧɨɟ ɡɧɚɱɟɧɢɟ, ɟɫɥɢ ɚɤɬɢɜɟɧ ɪɟɠɢɦ
ɥɟɬɧɟɝɨ ɜɪɟɦɟɧɢ, ɧɭɥɶ ɜ ɩɪɨɬɢɜɧɨɦ ɫɥɭɱɚɟ ɢ ɨɬɪɢɰɚɬɟɥɶɧɨɟ ɡɧɚɱɟɧɢɟ, ɟɫɥɢ ɢɧɮɨɪɦɚɰɢɹ ɨ ɫɟɡɨɧɟ ɜɪɟɦɟɧɢ ɧɟɞɨɫɬɭɩɧɚ.
181

Ɏɭɧɤɰɢɹ clock ɜɨɡɜɪɚɳɚɟɬ ɜɪɟɦɹ, ɢɡɦɟɪɹɟɦɨɟ ɩɪɨɰɟɫɫɨɪɨɦ ɜ ɬɚɤɬɚɯ ɨɬ
ɧɚɱɚɥɚ ɜɵɩɨɥɧɟɧɢɹ ɩɪɨɝɪɚɦɦɵ, ɢɥɢ –1, ɟɫɥɢ ɨɧɨ ɧɟɢɡɜɟɫɬɧɨ:
lockt clock(void)
ɉɟɪɟɫɱɟɬ ɷɬɨɝɨ ɜɪɟɦɟɧɢ ɜ ɫɟɤɭɧɞɵ ɜɵɩɨɥɧɹɟɬɫɹ ɩɨ ɮɨɪɦɭɥɟ
clock () / CLOCKS_PER_SEC.
Ɏɭɧɤɰɢɹ time ɜɨɡɜɪɚɳɚɟɬ ɬɟɤɭɳɟɟ ɤɚɥɟɧɞɚɪɧɨɟ ɜɪɟɦɹ ɢɥɢ –1, ɟɫɥɢ ɜɪɟɦɹ
ɧɟ ɢɡɜɟɫɬɧɨ:
timet time(time_t *tp)
ȿɫɥɢ ɭɤɚɡɚɬɟɥɶ tp ɧɟ ɪɚɜɟɧ NULL, ɜɨɡɜɪɚɳɚɟɦɨɟ ɡɧɚɱɟɧɢɟ ɡɚɩɢɫɵɜɚɟɬɫɹ
ɬɚɤɠɟ ɢ ɜ *tp.
Ɏɭɧɤɰɢɹ difftime ɜɨɡɜɪɚɳɚɟɬ
ɪɚɡɧɨɫɬɶ time2-timel, ɜɵɪɚɠɟɧɧɭɸ ɜ
ɫɟɤɭɧɞɚɯ:
double difftime (time_t time2, timet timel)
Ɏɭɧɤɰɢɹ mktime ɩɪɟɨɛɪɚɡɭɟɬ ɦɟɫɬɧɨɟ ɜɪɟɦɹ, ɡɚɞɚɧɧɨɟ ɫɬɪɭɤɬɭɪɨɣ *tp, ɜ
ɤɚɥɟɧɞɚɪɧɨɟ ɢ ɜɨɡɜɪɚɳɚɟɬ ɟɝɨ ɜ ɬɨɦ ɠɟ ɜɢɞɟ, ɱɬɨ ɢ ɮɭɧɤɰɢɹ time:
timet mktime(struct tm *tp)
Ʉɨɦɩɨɧɟɧɬɵ ɫɬɪɭɤɬɭɪɵ ɛɭɞɭɬ ɢɦɟɬɶ ɡɧɚɱɟɧɢɹ ɜ ɭɤɚɡɚɧɧɵɯ ɜɵɲɟ ɞɢɚɩɚɡɨɧɚɯ. Ɏɭɧɤɰɢɹ ɜɨɡɜɪɚɳɚɟɬ ɤɚɥɟɧɞɚɪɧɨɟ ɜɪɟɦɹ ɢɥɢ –1, ɟɫɥɢ ɨɧɨ ɧɟ ɩɪɟɞɫɬɚɜɢɦɨ.
ɋɥɟɞɭɸɳɢɟ ɱɟɬɵɪɟ ɮɭɧɤɰɢɢ ɜɨɡɜɪɚɳɚɸɬ ɭɤɚɡɚɬɟɥɢ
ɧɚ ɫɬɚɬɢɱɟɫɤɢɟ ɨɛɴɟɤ-
ɬɵ, ɤɚɠɞɵɣ ɢɡ ɤɨɬɨɪɵɯ ɦɨɠɟɬ ɛɵɬɶ ɦɨɞɢɮɢɰɢɪɨɜɚɧ ɞɪɭɝɢɦɢ ɜɵɡɨɜɚɦɢ.
Ɏɭɧɤɰɢɹ asctime ɩɪɟɨɛɪɚɡɭɟɬ ɜɪɟɦɹ ɢɡ ɫɬɪɭɤɬɭɪɵ *tp ɜ ɫɬɪɨɤɭ ɜɢɞɚ
Sun Jan 3 15:14:13 1988\n\0. ɋɢɧɬɚɤɫɢɫ ɮɭɧɤɰɢɢ:
char *asctime(const struct tm *tp)
Ɏɭɧɤɰɢɹ ctime ɩɪɟɨɛɪɚɡɭɟɬ ɤɚɥɟɧɞɚɪɧɨɟ ɜɪɟɦɹ ɜ ɦɟɫɬɧɨɟ, ɱɬɨ ɷɤɜɢɜɚɥɟɧɬɧɨ ɜɵɡɨɜɭ ɮɭɧɤɰɢɢ asctime(localtime(tp)). ɋɢɧɬɚɤɫɢɫ ɮɭɧɤɰɢɢ:
char *ctime(const timet *tp)
Ɏɭɧɤɰɢɹ gmtime ɩɪɟɨɛɪɚɡɭɟɬ ɤɚɥɟɧɞɚɪɧɨɟ ɜɪɟɦɹ ɜ ɬɚɤ ɧɚɡɵɜɚɟɦɨɟ ɫɤɨɨɪɞɢɧɢɪɨɜɚɧɧɨɟ ɭɧɢɜɟɪɫɚɥɶɧɨɟ ɜɪɟɦɹ (Coordinated Universal Time – UTQ):
struct tm *gmtime(const timet *tp)
Ɉɧɚ ɜɨɡɜɪɚɳɚɟɬ NULL, ɟɫɥɢ UTC ɧɟ ɢɡɜɟɫɬɧɨ. ɂɦɹ ɷɬɨɣ ɮɭɧɤɰɢɢ ɫɥɨɠɢɥɨɫɶ ɢɫɬɨɪɢɱɟɫɤɢ ɢ ɨɡɧɚɱɚɟɬ Greenwich Mean Time (ɫɪɟɞɧɟɟ ɝɪɢɧɜɢɱɫɤɨɟ ɜɪɟɦɹ).
Ɏɭɧɤɰɢɹ localtime ɩɪɟɨɛɪɚɡɭɟɬ ɤɚɥɟɧɞɚɪɧɨɟ ɜɪɟɦɹ *tp ɜ ɦɟɫɬɧɨɟ:
struct tm *localtime (const time_t *tp)
Ɏɭɧɤɰɢɹ strftime ɮɨɪɦɚɬɢɪɭɟɬ ɞɚɬɭ ɢ ɜɪɟɦɹ ɢɡ *tp ɢ ɩɨɦɟɳɚɟɬ ɟɟ ɜ
ɫɬɪɨɤɭ s ɫɨɝɥɚɫɧɨ ɫɬɪɨɤɟ ɮɨɪɦɚɬɚ fmt, ɚɧɚɥɨɝɢɱɧɨɣ ɬɨɣ, ɤɨɬɨɪɚɹ ɢɫɩɨɥɶɡɭɟɬɫɹ
ɜ ɮɭɧɤɰɢɢ printf. ɋɢɧɬɚɤɫɢɫ ɮɭɧɤɰɢɢ
:
size_t strftime(char *s, size_t smax,
const char *fmt# const struct tm *tp)
Ɉɛɵɱɧɵɟ ɫɢɦɜɨɥɵ (ɜɤɥɸɱɚɹ ɡɚɜɟɪɲɚɸɳɢɣ ɫɢɦɜɨɥ '\0') ɤɨɩɢɪɭɸɬɫɹ ɜ s.
Ʉɚɠɞɚɹ ɩɚɪɚ, ɫɨɫɬɨɹɳɚɹ ɢɡ % ɢ ɛɭɤɜɵ, ɡɚɦɟɧɹɟɬɫɹ, ɤɚɤ ɨɩɢɫɚɧɨ ɧɢɠɟ, ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ ɡɧɚɱɟɧɢɣ ɩɨ ɮɨɪɦɟ, ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɣ ɤɨɧɤɪɟɬɧɨɣ ɤɭɥɶɬɭɪɧɨɣ ɫɪɟɞɟ.
ȼ ɫɬɪɨɤɭ s ɩɨɦɟɳɚɟɬɫɹ ɧɟ ɛɨɥɟɟ smax ɫɢɦɜɨɥɨɜ. Ɏɭɧɤɰɢɹ ɜɨɡɜɪɚɳɚɟɬ ɤɨɥɢɱɟ-
182

ɫɬɜɨ ɫɢɦɜɨɥɨɜ ɛɟɡ ɭɱɟɬɚ '\0' ɢɥɢ ɧɭɥɶ, ɟɫɥɢ ɱɢɫɥɨ ɫɝɟɧɟɪɢɪɨɜɚɧɧɵɯ ɫɢɦɜɨɥɨɜ
ɛɨɥɶɲɟ smax.
ɋɩɟɰɢɮɢɤɚɬɨɪɵ ɮɨɪɦɚɬɚ ɞɥɹ ɮɭɧɤɰɢɢ strftime ɩɪɢɜɟɞɟɧɵ ɜ ɬɚɛɥɢɰɟ Ⱥ.7.
Ɍ ɚ ɛ ɥ ɢ ɰ ɚ Ⱥ.7
ɋɩɟɰɢɮɢɤɚɬɨɪɵ ɮɨɪɦɚɬɚ ɞɥɹ ɮɭɧɤɰɢɢ strftime
ɋɩɟɰɢɮɢɤɚɬɨɪ ɑɬɨ ɨɬɨɛɪɚɠɚɟɬ
%ɚ
%A
%b
%B
%ɫ
%d
%H
%I
%j
%m
%M
%p
%s
%U
%w
%W
%x
%X
%ɭ
%Y
%Z
%%
ɋɨɤɪɚɳɟɧɧɨɟ ɧɚɡɜɚɧɢɟ ɞɧɹ ɧɟɞɟɥɢ
ɉɨɥɧɨɟ ɧɚɡɜɚɧɢɟ ɞɧɹ ɧɟɞɟɥɢ
ɋɨɤɪɚɳɟɧɧɨɟ ɧɚɡɜɚɧɢɟ ɦɟɫɹɰɚ
ɉɨɥɧɨɟ ɧɚɡɜɚɧɢɟ ɦɟɫɹɰɚ
Ɇɟɫɬɧɨɟ ɩɪɟɞɫɬɚɜɥɟɧɢɟ ɞɚɬɵ ɢ ɜɪɟɦɟɧɢ
Ⱦɟɧɶ ɦɟɫɹɰɚ (01–31)
ɑɚɫ (ɩɨ 24-ɱɚɫɨɜɨɦɭ ɜɪɟɦɟɧɢ) (00–23)
ɑɚɫ (ɩɨ 12-ɱɚɫɨɜɨɦɭ ɜɪɟɦɟɧɢ) (01–12)
Ⱦɟɧɶ ɨɬ ɧɚɱɚɥɚ ɝɨɞɚ (001–366)
Ɇɟɫɹɰ (01–12)
Ɇɢɧɭɬɚ (00–59)
Ɇɟɫɬɧɨɟ ɩɪɟɞɫɬɚɜɥɟɧɢɟ ɜɪɟɦɟɧɢ ɞɨ ɢ ɩɨɫɥɟ ɩɨɥɭɞɧɹ
ɋɟɤɭɧɞɚ (00–61)
ɇɟɞɟɥɹ ɨɬ ɧɚɱɚɥɚ ɝɨɞɚ (ɫɱɢɬɚɹ ɩɟɪɜɵɦ ɞɧɟɦ ɧɟɞɟɥɢ
ɜɨɫɤɪɟɫɟɧɶɟ) (ɨɬ 00 ɞɨ 53)
Ⱦɟɧɶ ɧɟɞɟɥɢ (0–6, ɧɨɦɟɪ ɜɨɫɤɪɟɫɟɧɶɹ ɪɚɜɟɧ 0)
ɇɨɦɟɪ ɧɟɞɟɥɢ ɨɬ ɧɚɱɚɥɚ ɝɨɞɚ (ɫɱɢɬɚɹ ɩɟɪɜɵɦ ɞɧɟɦ
ɧɟɞɟɥɢ ɩɨɧɟɞɟɥɶɧɢɤ) (ɨɬ 00 ɞɨ 53)
Ɇɟɫɬɧɨɟ ɩɪɟɞɫɬɚɜɥɟɧɢɟ ɞɚɬɵ
Ɇɟɫɬɧɨɟ ɩɪɟɞɫɬɚɜɥɟɧɢɟ ɜɪɟɦɟɧɢ
Ƚɨɞ ɛɟɡ ɭɤɚɡɚɧɢɹ ɜɟɤɚ (00–99)
Ƚɨɞ ɫ ɭɤɚɡɚɧɢɟɦ ɜɟɤɚ
ɇɚɡɜɚɧɢɟ ɱɚɫɨɜɨɝɨ ɩɨɹɫɚ, ɟɫɥɢ ɟɫɬɶ
ɋɢɦɜɨɥ %
183

ʞʟʗʚʝʕʔʜʗʔʐ.ʝʞʟʔʓʔʚʔʜʗʔʙʝʜʠʡʏʜʡ
ʓʚʮʞʟʝʒʟʏʛʛʗʟʝʑʏʜʗʮUSB
// Ɏɚɣɥ usbdefs.h [7]
// ɩɨɞɤɥɸɱɟɧɢɟ ɮɚɣɥɚ ɨɩɪɟɞɟɥɟɧɢɣ ɢɡ ɩɚɤɟɬɚ DDK extern
"C"{
#include "hidsdi.h"}
// ɛɚɡɨɜɵɟ ɤɨɞɵ ɜɜɨɞɚ-ɜɵɜɨɞɚ
#include <winioctl.h>
// ɦɚɤɫɢɦɚɥɶɧɚɹ ɞɥɢɧɚ ɫɬɪɨɤɢ ɨɩɢɫɚɧɢɹ
#define MAXIMUM_USB_STRING_LENGTH 255
// ɬɢɩɵ ɨɩɪɟɞɟɥɢɬɟɥɟɣ (descriptors)
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
#define USB_STRING_DESCRIPTOR_TYPE 0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
// ɬɢɩɵ ɤɥɚɫɫɨɜ ɭɫɬɪɨɣɫɬɜ USB
#define USB_DEVICE_CLASS_RESERVED 0x00
#define USB_DEVICE_CLASS_AUDIO 0x01
#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
#define USB_DEVICE_CLASS_MONITOR 0x04
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
#define USB_DEVICE_CLASS_POWER 0x06
#define USB_DEVICE_CLASS_PRINTER 0x07
#define USB_DEVICE_CLASS_STORAGE 0x08
#define USB_DEVICE_CLASS_HUB 0x09
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
// ɤɨɞɵ ɜɜɨɞɚ-ɜɵɜɨɞɚ ɞɥɹ ɮɭɧɤɰɢɢ DeviceIoControl
#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN
#define USB_IOCTL_INDEX 0x00ff
#define IOCTL_USB_GET_NODE_INFORMATION CTL_CODE (
FILE_DEVICE_USB, \
USB_IOCTL_INDEX + 3, \
METHOD_BUFFERED, FILE_ANY_ACCESS )
#define IOCTL_USB_GET_ROOT_HUB_NAME CTL_CODE (
FILE_DEVICE_USB, \
USB_IOCTL_INDEX + 3, \
METHOD_BUFFERED, FILE_ANY_ACCESS )
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION
CTL_CODE ( FILE_DEVICE_USB, USB_IOCTL_INDEX + 4, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define OCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION
CTL_CODE(FILE_DEVICE_USB, USB_IOCTL_INDEX + 5, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_NAME CTL_CODE
184

(FILE_DEVICE_USB, USB_IOCTL_INDEX + 6, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME
CTL_CODE(FILE_DEVICE_USB, USB_IOCTL_INDEX + 9, \
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_HCD_DRIVERKEY_NAME CTL_CODE ( \
FILE_DEVICE_USB, \ USB_IOCTL_INDEX + 10,
METHOD_BUFFERED, FILE_ANY_ACCESS)
// ɫɬɪɭɤɬɭɪɵ ɞɚɧɧɵɯ
#pragma pack (1)
// ɨɩɢɫɚɬɟɥɶ ɢɧɬɟɪɮɟɣɫɚ ɭɫɬɪɨɣɫɬɜɚ typedef struct
_USB_INTERFACE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bInterfaceNumber;
UCHAR bAlternateSetting;
UCHAR bNumEndpoints;
UCHAR bInterfaceClass;
UCHAR bInterfaceSubClass;
UCHAR bInterfaceProtocol; UCHAR iInterface;
} USB_INTERFACE_DESCRIPTOR,
*PUSB_INTERFACE_DESCRIPTOR;
// ɞɨɩɨɥɧɢɬɟɥɶɧɵɣ ɨɩɢɫɚɬɟɥɶ ɢɧɬɟɪɮɟɣɫɚ ɭɫɬɪɨɣɫɬɜɚ typedef
struct _USB_INTERFACE_DESCRIPTOR2 {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bInterfaceNumber;
UCHAR bAlternateSetting;
UCHAR bNumEndpoints;
UCHAR bInterfaceClass;
UCHAR bInterfaceSubClass;
UCHAR bInterfaceProtocol;
UCHAR iInterface;
USHORT wNumClasses;
} USB_INTERFACE_DESCRIPTOR2, *PUSB_INTERFACE_DESCRIPTOR2;
// ɨɩɢɫɚɧɢɟ ɤɨɧɮɢɝɭɪɚɰɢɢ
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT wTotalLength;
UCHAR bNumInterfaces;
UCHAR bConfigurationValue;
UCHAR iConfiguration;
UCHAR bmAttributes;
UCHAR MaxPower; } USB_CONFIGURATION_DESCRIPTOR,
185

*PUSB_CONFIGURATION_DESCRIPTOR;
// ɨɫɧɨɜɧɨɣ ɨɩɢɫɚɬɟɥɶ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_COMMON_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
// ɨɩɢɫɚɬɟɥɶ ɤɨɪɧɟɜɨɝɨ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_ROOT_HUB_NAME {
ULONG ActualLength;
WCHAR RootHubName[1];
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
// ɩɚɪɚɦɟɬɪɵ ɩɨɞɤɥɸɱɟɧɧɨɝɨ ɤ ɛɚɡɨɜɨɦɭ ɭɡɥɭ
// ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_NODE_CONNECTION_NAME {
ULONG ConnectionIndex;
ULONG ActualLength;
WCHAR NodeName[1];
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
// ɨɩɢɫɚɧɢɟ ɞɪɚɣɜɟɪɚ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
ULONG ConnectionIndex;
ULONG ActualLength;
WCHAR DriverKeyName[1];
} USB_NODE_CONNECTION_DRIVERKEY_NAME,
*PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
// ɫɬɪɨɤɨɜɵɣ ɨɩɢɫɚɬɟɥɶ
typedef struct _USB_STRING_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
WCHAR bString[1];
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
// ɨɩɢɫɚɧɢɟ ɩɨɞɤɥɸɱɟɧɧɨɝɨ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _STRING_DESCRIPTOR_NODE {
struct _STRING_DESCRIPTOR_NODE *Next; UCHAR DescriptorIndex;
USHORT LanguageID;
USB_STRING_DESCRIPTOR StringDescriptor[0];
} STRING_DESCRIPTOR_NODE, *PSTRING_DESCRIPTOR_NODE; //
ɨɩɢɫɚɧɢɟ ɛɚɡɨɜɨɝɨ ɭɡɥɚ
typedef struct _USB_HUB_DESCRIPTOR {
UCHAR bDescriptorLength;
UCHAR bDescriptorType;
UCHAR bNumberOfPorts;
USHORT wHubCharacteristics;
UCHAR bPowerOnToPowerGood;
186

UCHAR bHubControlCurrent;
UCHAR bRemoveAndPowerMask[64];
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
// ɞɨɩɨɥɧɢɬɟɥɶɧɚɹ ɢɧɮɨɪɦɚɰɢɹ ɨ ɛɚɡɨɜɨɦ ɭɡɥɟ
typedef struct _USB_HUB_INFORMATION {
USB_HUB_DESCRIPTOR HubDescriptor;
BOOLEAN HubIsBusPowered;
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
typedef struct _USB_MI_PARENT_INFORMATION {
ULONG NumberOfInterfaces;
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
// ɩɚɪɚɦɟɬɪɵ ɞɪɚɣɜɟɪɚ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_HCD_DRIVERKEY_NAME {
ULONG ActualLength;
WCHAR DriverKeyName[1];
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
// ɨɩɢɫɚɧɢɟ ɛɚɡɨɜɨɝɨ ɭɡɥɚ
typedef enum _USB_HUB_NODE {
UsbHub, UsbMIParent } USB_HUB_NODE;
typedef struct _USB_NODE_INFORMATION {
USB_HUB_NODE NodeType; union {
USB_HUB_INFORMATION HubInformation;
USB_MI_PARENT_INFORMATION MiParentInformation;
} u;
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
// ɩɚɪɚɦɟɬɪɵ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_DEVICE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT bcdUSB;
UCHAR bDeviceClass;
UCHAR bDeviceSubClass;
UCHAR bDeviceProtocol;
UCHAR bMaxPacketSize0;
USHORT idVendor;
USHORT idProduct;
USHORT bcdDevice;
UCHAR iManufacturer;
UCHAR iProduct;
UCHAR iSerialNumber;
UCHAR bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
// ɫɨɫɬɨɹɧɢɟ ɫɨɟɞɢɧɟɧɢɹ
typedef enum _USB_CONNECTION_STATUS {
NoDeviceConnected,
187

DeviceConnected,
DeviceFailedEnumeration,
DeviceGeneralFailure,
DeviceCausedOvercurrent,
DeviceNotEnoughPower,
DeviceNotEnoughBandwidth
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
// ɞɨɩɨɥɧɢɬɟɥɶɧɚɹ ɢɧɮɨɪɦɚɰɢɹ ɨ ɩɨɞɤɥɸɱɟɧɧɨɦ
// ɭɫɬɪɨɣɫɬɜɟ
typedef struct _USB_ENDPOINT_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
USHORT wMaxPacketSize;
UCHAR bInterval;
} USB_ENDPOINT_DESCRIPTOR,
*PUSB_ENDPOINT_DESCRIPTOR;
typedef struct _USB_PIPE_INFO {
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
ULONG ScheduleOffset;
} USB_PIPE_INFO, *PUSB_PIPE_INFO;
typedef struct _USB_NODE_CONNECTION_INFORMATION { ULONG
ConnectionIndex;
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
UCHAR CurrentConfigurationValue;
BOOLEAN LowSpeed;
BOOLEAN DeviceIsHub;
USHORT DeviceAddress;
ULONG NumberOfOpenPipes;
USB_CONNECTION_STATUS ConnectionStatus;
USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION,
*PUSB_NODE_CONNECTION_INFORMATION;
// ɬɟɤɭɳɟɟ ɫɨɫɬɨɹɧɢɟ ɭɫɬɪɨɣɫɬɜɚ
typedef struct _USB_DESCRIPTOR_REQUEST {
ULONG ConnectionIndex;
struct {
UCHAR bmRequest;
UCHAR bRequest;
USHORT wValue;
USHORT wIndex;
USHORT wLength;
} SetupPacket;
UCHAR Data[0];
188

} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
// ɨɛɳɢɟ ɩɚɪɚɦɟɬɪɵ ɭɫɬɪɨɣɫɬɜɚ
typedef struct {
PCHAR HubName;
PUSB_NODE_INFORMATION HubInfo;
PUSB_NODE_CONNECTION_INFORMATION ConnectionInfo;
PUSB_DESCRIPTOR_REQUEST ConfigDesc;
PSTRING_DESCRIPTOR_NODE StringDescs;
} USBDEVICEINFO, *PUSBDEVICEINFO;
#pragma pack ( )
189

ɭ
Ʉɧɢɝɢ ɩɨɱɬɨɣ
Ɂɚɤɚɡ ɦɨɠɧɨ ɫɞɟɥɚɬɶ ɧɚ ɫɚɣɬɟ ɢɡɞɚɬɟɥɶɫɬɜɚ
www.infra-e.ru
ʋ
ɩ/ɩ
API ɜ ɪɚɡɪɚɛɨɬɤɟ ɩɪɢɥɨɠɟɧɢɣ Autodesk Inventor.
1
ɉɪɚɤɬɢɱɟɫɤɨɟ ɪɭɤɨɜɨɞɫɬɜɨ
2 Ⱥɥɝɨɪɢɬɦɵ Data Science ɢ ɢɯ ɩɪɚɤɬɢɱɟɫɤɚɹ ɪɟɚɥɢɡɚɰɢɹ ɧɚ Python
Ⱥɧɚɥɢɡ ɢ ɜɢɡɭɚɥɢɡɚɰɢɹ ɞɚɧɧɵɯ ɜ Microsoft Excel ɜ ɩɪɢɦɟɪɚɯ
3
ɢ ɡɚɞɚɱɚɯ
Ⱥɧɚɥɢɡ ɢ ɦɨɞɟɥɢɪɨɜɚɧɢɟ ɬɢɩɨɜɵɯ ɫɢɫɬɟɦ ɦɚɫɫɨɜɨɝɨ
4
5 Ⱥɩɩɚɪɚɬɧɵɟ ɫɪɟɞɫɬɜɚ ɜɵɱɢɫɥɢɬɟɥɶɧɨɣ ɬɟɯɧɢɤɢ
6
7
8 ȼɵɫɨɤɨɩɪɨɢɡɜɨɞɢɬɟɥɶɧɵɟ ɫɢɫɬɟɦɵ ɨɛɧɚɪɭɠɟɧɢɹ ɜɬɨɪɠɟɧɢɣ
9
10 ȿnglish for computer science
11
12 ɂɧɮɨɪɦɚɬɢɤɚ. Ʉɭɪɫ ɥɟɤɰɢɣ
13 ɂɧɮɨɪɦɚɰɢɨɧɧɵɟ ɬɟɯɧɨɥɨɝɢɢ
14
15
16
ɠɢɜɚɧɢɹ
ɨɛɫɥ
Ⱥɩɩɚɪɚɬɧɵɟ ɫɪɟɞɫɬɜɚ ɢ ɩɪɨɝɪɚɦɦɧɨɟ ɨɛɟɫɩɟɱɟɧɢɟ
ɩɪɨɦɵɲɥɟɧɧɵɯ ɤɨɧɬɪɨɥɥɟɪɨɜ SIMATIC S7
Ⱥɫɢɦɩɬɨɬɢɱɟɫɤɢɣ ɚɧɚɥɢɡ ɩɨɜɟɞɟɧɢɹ ɩɪɢɤɥɚɞɧɵɯ ɦɨɞɟɥɟɣ
ɦɚɲɢɧɧɨɝɨ ɨɛɭɱɟɧɢɹ
Ⱦɟɬɟɪɦɢɧɢɪɨɜɚɧɧɵɟ ɫɢɝɧɚɥɵ. Ʌɚɛɨɪɚɬɨɪɧɵɣ ɩɪɚɤɬɢɤɭɦ
ɜ MATLAB
ɂɧɬɟɪɧɟɬ ɜɟɳɟɣ ɞɥɹ ɧɚɱɢɧɚɸɳɢɯ. ȼɢɡɭɚɥɶɧɨɟ
ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟ ɦɢɤɪɨɤɨɧɬɪɨɥɥɟɪɨɜ ɫɟɦɟɣɫɬɜɚ ESP8266
ɂɧɮɨɪɦɚɰɢɨɧɧɵɟ ɬɟɯɧɨɥɨɝɢɢ ɜ ɩɪɨɮɟɫɫɢɨɧɚɥɶɧɨɣ
ɞɟɹɬɟɥɶɧɨɫɬɢ
Ʉɨɦɩɶɸɬɟɪɧɚɹ ɝɪɚɮɢɤɚ ɩɪɢ ɩɪɨɟɤɬɢɪɨɜɚɧɢɢ ɷɥɟɤɬɪɢɱɟɫɤɢɯ
ɫɯɟɦ
Ɇɚɬɟɦɚɬɢɱɟɫɤɢɟ ɢ ɩɪɨɝɪɚɦɦɧɵɟ ɦɟɬɨɞɵ ɩɨɫɬɪɨɟɧɢɹ ɦɨɞɟɥɟɣ
ɝɥɭɛɨɤɨɝɨ ɨɛɭɱɟɧɢɹ
ɇɚɢɦɟɧɨɜɚɧɢɟ ɤɧɢɝɢ
Ɇɢɤɪɨɩɪɨɰɟɫɫɨɪɧɵɟ ɫɢɫɬɟɦɵ. ɉɪɢɦɟɧɟɧɢɟ ɦɢɤɪɨɤɨɧɬɪɨɥɥɟɪɨɜ
17
ɫɟɦɟɣɫɬɜɚ AVR ɞɥɹ ɭɩɪɚɜɥɟɧɢɹ ɜɧɟɲɧɢɦɢ ɭɫɬɪɨɣɫɬɜɚɦɢ
Ɇɢɤɪɨɩɪɨɰɟɫɫɨɪɧɵɟ ɫɢɫɬɟɦɵ. Ɋɚɡɪɚɛɨɬɤɚ ɩɪɨɝɪɚɦɦɧɨɝɨ
18
ɨɛɟɫɩɟɱɟɧɢɹ ɞɥɹ ɦɢɤɪɨɤɨɧɬɪɨɥɥɟɪɨɜ ɫɟɦɟɣɫɬɜɚ AVR
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
