Тип данных word c: Спецификаторы формата для типов данных BYTE, WORD и DWORD на языке c?
апиентри | Соглашение о вызовах для системных функций. Этот тип объявляется в Виндеф. h следующим образом: #define APIENTRY WINAPI | ||
АТОМАР | Atom. Дополнительные сведения см. в разделе о таблицах Atom. Этот тип объявляется в Виндеф. h следующим образом: typedef WORD ATOM; | ||
ЛОГИЧЕСКОМ | Логическая переменная (должна иметь значение true или false). Этот тип объявляется в Виндеф. h следующим образом: typedef int BOOL; | ||
ЛОГИЧЕСКАЯ | Логическая переменная (должна иметь значение true или false). Этот тип объявлен в WinNT. h следующим образом: typedef BYTE BOOLEAN; | ||
ДВУХБАЙТОВЫХ | Байт (8 бит). Этот тип объявляется в Виндеф. h следующим образом: typedef unsigned char BYTE; | ||
ОБРАТНОГО вызова | Соглашение о вызовах для функций обратного вызова. Этот тип объявляется в Виндеф. h следующим образом: #define CALLBACK __stdcall Функции callback, WinAPIи апиентри используются для определения функций с помощью соглашения о вызовах __stdcall. большинство функций в API Windows объявляются с помощью WINAPI. Вы можете использовать обратный вызов для функций обратного вызова, которые реализуются, чтобы определить функцию как функцию обратного вызова. | ||
CCHAR | 8-разрядный символ Windows (ANSI). Этот тип объявлен в WinNT. h следующим образом: typedef char CCHAR; | ||
ТИПА | 8-разрядный символ Windows (ANSI). Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом: typedef char CHAR; | ||
COLORREF | Значение цвета красного, зеленого, синего (RGB) (32 бит). Сведения об этом типе см. в разделе COLORREF . Этот тип объявляется в Виндеф. h следующим образом: typedef DWORD COLORREF; | ||
ПОСТОЯННОГО | Переменная, значение которой остается постоянной во время выполнения. Этот тип объявляется в Виндеф. h следующим образом: #define CONST const | ||
DWORD | 32-разрядное целое число без знака. Диапазон — от 0 до 4294967295 десятичных знаков. Этот тип объявляется в Интсафе. h следующим образом: typedef unsigned long DWORD; | ||
ОБЪЕКТА DWORDLONG | 64-разрядное целое число без знака. Диапазон — от 0 до 18446744073709551615 Decimal. Этот тип объявляется в Интсафе. h следующим образом: typedef unsigned __int64 DWORDLONG; | ||
DWORD_PTR | Тип long без знака для точности указателя. Используется при приведении указателя к длинному типу для выполнения арифметических операций с указателями. (Также часто используется для общих 32-разрядных параметров, которые были расширены до 64 бит в 64-разрядной Windows.) Этот тип объявляется в Басетсд. h следующим образом: typedef ULONG_PTR DWORD_PTR; | ||
DWORD32 | 32-разрядное целое число без знака. Этот тип объявляется в Басетсд. h следующим образом: typedef unsigned int DWORD32; | ||
DWORD64 | 64-разрядное целое число без знака. Этот тип объявляется в Басетсд. h следующим образом: typedef unsigned __int64 DWORD64; | ||
СДЕЛАТЬ | Переменная с плавающей запятой. Этот тип объявляется в Виндеф. h следующим образом: typedef float FLOAT; | ||
хакцел | Маркер для таблицы сочетаний клавиш. Этот тип объявляется в Виндеф. h следующим образом: typedef HANDLE HACCEL; | ||
HALF_PTR | Половина размера указателя. Используйте в структуре, содержащей указатель и два маленьких поля. Этот тип объявляется в Басетсд. h следующим образом:
| ||
СПРАВИТЬСЯ | Маркер объекта. Этот тип объявлен в WinNT. h следующим образом:
| ||
хбитмап | Маркер точечного рисунка. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хбруш | Дескриптор кисти. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хколорспаце | Маркер цветового пространства. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хконв | Маркер диалога динамического обмена данными (DDE). Этот тип объявляется в Ддемл. h следующим образом:
| ||
хконвлист | Маркер для списка сеансов DDE. Этот тип объявляется в Ддемл. h следующим образом:
| ||
хкурсор | Указатель на курсор. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HDC | Маркер контекста устройства (DC). Этот тип объявляется в Виндеф. h следующим образом:
| ||
хддедата | Обработчик данных DDE. Этот тип объявляется в Ддемл. h следующим образом:
| ||
хдеск | Маркер рабочего стола. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HDROP | Маркер внутренней структуры перетаскивания. Этот тип объявляется в Шеллапи. h следующим образом:
| ||
хдвп | Указатель на структуру отложенной позицией окна. Этот тип объявлен в файле WinUser. h следующим образом:
| ||
хенхметафиле | Маркер расширенного метафайла. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HFILE | Обработчик для файла, открытого с помощью OpenFile, а не CreateFile. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хфонт | Маркер для шрифта. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хгдиобж | Маркер объекта GDI. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хглобал | Маркер глобального блока памяти. Этот тип объявляется в Виндеф. h следующим образом:
| ||
ххук | Маркер обработчика. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хикон | Маркер для значка. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HINSTANCE | Маркер экземпляра. Это базовый адрес модуля в памяти. Хмодуле и HINSTANCE уже сегодня, но в 16-разрядных Windows представлены различные вещи. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HKEY | Маркер раздела реестра. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HKL | Идентификатор языка ввода. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хлокал | Маркер локального блока памяти. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HMENU | Маркер меню. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хметафиле | Маркер для метафайла. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хмодуле | Обработчик для модуля. — Это базовый адрес модуля в памяти. хмодуле и HINSTANCE одинаковы в текущих версиях Windows, но в 16-разрядных Windows представлены различные вещи. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хмонитор | Маркер монитора. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хпалетте | Маркер для палитры. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хпен | Указатель на перо. Этот тип объявляется в Виндеф. h следующим образом:
| ||
СОСТАВ | Коды возврата, используемые интерфейсами COM. Дополнительные сведения см. в разделе структура кодов ошибок COM. Чтобы проверить значение HRESULT , Используйте макросы, Завершившиеся сбоем и Failed . Этот тип объявлен в WinNT. h следующим образом:
| ||
хргн | Маркер для региона. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хрсрк | Маркер ресурса. Этот тип объявляется в Виндеф. h следующим образом:
| ||
хсз | Маркер строки DDE. Этот тип объявляется в Ддемл. h следующим образом:
| ||
хвинста | Обработчик оконной станции. Этот тип объявляется в Виндеф. h следующим образом:
| ||
HWND | Маркер окна. Этот тип объявляется в Виндеф. h следующим образом:
| ||
INT | 32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647. Этот тип объявляется в Виндеф. h следующим образом:
| ||
INT_PTR | Целочисленный тип со знаком для точности указателя. Используется при приведении указателя на целое число для выполнения арифметических операций с указателями. Этот тип объявляется в Басетсд. h следующим образом:
| ||
INT8 | 8-битовое целое число со знаком. Этот тип объявляется в Басетсд. h следующим образом:
| ||
INT16 | 16-разрядное знаковое целое число. Этот тип объявляется в Басетсд. h следующим образом:
| ||
ТИПА | 32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647. Этот тип объявляется в Басетсд. h следующим образом:
| ||
INT64 | 64-разрядное целое число со знаком. Диапазон составляет от-9223372036854775808 до 9223372036854775807 десятичного числа. Этот тип объявляется в Басетсд. h следующим образом:
| ||
НАДЕЖНО | Идентификатор языка. Дополнительные сведения см. в разделе идентификаторы языков. Этот тип объявлен в WinNT. h следующим образом:
| ||
НАМНОГО | Идентификатор локали. Дополнительные сведения см. в разделе идентификаторы языкового стандарта. Этот тип объявлен в WinNT. h следующим образом:
| ||
LCTYPE | Тип сведений о языковых стандартах. Список см. в разделе константы сведений о языковых стандартах. Этот тип объявляется в Виннлс. h следующим образом:
| ||
лгрпид | Идентификатор языковой группы. Список см. в разделе енумлангуажеграуплокалес. Этот тип объявляется в Виннлс. h следующим образом:
| ||
ПОДДЕРЖИВАЕМ | 32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647. Этот тип объявлен в WinNT. h следующим образом:
| ||
лонглонг | 64-разрядное целое число со знаком. Диапазон составляет от-9223372036854775808 до 9223372036854775807 десятичного числа. Этот тип объявлен в WinNT. h следующим образом:
| ||
LONG_PTR | Длинный тип со знаком для точности указателя. Используется при приведении указателя к типу long для выполнения арифметических операций с указателями. Этот тип объявляется в Басетсд. h следующим образом:
| ||
LONG32 | 32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647. Этот тип объявляется в Басетсд. h следующим образом:
| ||
LONG64 | 64-разрядное целое число со знаком. Диапазон составляет от-9223372036854775808 до 9223372036854775807 десятичного числа. Этот тип объявляется в Басетсд. h следующим образом:
| ||
LPARAM | Параметр сообщения. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лпбул | Указатель на логическоезначение. Этот тип объявляется в Виндеф. h следующим образом:
| ||
LPBYTE | Указатель на байт. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лпколорреф | Указатель на значение COLORREF . Этот тип объявляется в Виндеф. h следующим образом:
| ||
LPCSTR | указатель на константную строку, завершающуюся нулем, в 8-разрядной Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
LPCTSTR | Лпквстр , если определен Юникод , LPCSTR в противном случае. дополнительные сведения см. в разделе Windows типы данных для строк. Этот тип объявлен в WinNT. h следующим образом:
| ||
лпквоид | Указатель на константу любого типа. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лпквстр | Указатель на константную строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
лпдворд | Указатель на DWORD. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лфандле | Указатель на маркер. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лпинт | Указатель на тип int. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лплонг | Указатель на значение типа Long. Этот тип объявляется в Виндеф. h следующим образом:
| ||
LPSTR | указатель на строку, завершающуюся нулем или 8-разрядную Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
LPTSTR | LPWSTR , если определен Юникод , LPSTR в противном случае. дополнительные сведения см. в разделе Windows типы данных для строк. Этот тип объявлен в WinNT. h следующим образом:
| ||
лпвоид | Указатель на любой тип. Этот тип объявляется в Виндеф. h следующим образом:
| ||
лпворд | Указатель на слово. Этот тип объявляется в Виндеф. h следующим образом:
| ||
LPWSTR | Указатель на строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
LRESULT | Подписанный результат обработки сообщения. Этот тип объявляется в Виндеф. h следующим образом:
| ||
пбул | Указатель на логическоезначение. Этот тип объявляется в Виндеф. h следующим образом:
| ||
пбулеан | Указатель на логическое значение. Этот тип объявлен в WinNT. h следующим образом:
| ||
пбите | Указатель на байт. Этот тип объявляется в Виндеф. h следующим образом:
| ||
пчар | Указатель на символ. Этот тип объявлен в WinNT. h следующим образом:
| ||
пкстр | указатель на константную строку, завершающуюся нулем, в 8-разрядной Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
пктстр | Пквстр , если определен Юникод , пкстр в противном случае. дополнительные сведения см. в разделе Windows типы данных для строк. Этот тип объявлен в WinNT. h следующим образом:
| ||
пквстр | Указатель на константную строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
пдворд | Указатель на DWORD. Этот тип объявляется в Виндеф. h следующим образом:
| ||
пдвордлонг | Указатель на объекта dwordlong. Этот тип объявлен в WinNT. h следующим образом:
| ||
PDWORD_PTR | Указатель на DWORD_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PDWORD32 | Указатель на DWORD32. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PDWORD64 | Указатель на DWORD64. Этот тип объявляется в Басетсд. h следующим образом:
| ||
пфлоат | Указатель на число с плавающей запятой. Этот тип объявляется в Виндеф. h следующим образом:
| ||
PHALF_PTR | Указатель на HALF_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
фандле | Указатель на маркер. Этот тип объявлен в WinNT. h следующим образом:
| ||
фкэй | Указатель на hKey. Этот тип объявляется в Виндеф. h следующим образом:
| ||
КОМАНДУ | Указатель на тип int. Этот тип объявляется в Виндеф. h следующим образом:
| ||
PINT_PTR | Указатель на INT_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PINT8 | Указатель на INT8. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PINT16 | Указатель на значение INT16. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PINT32 | Указатель на Int32. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PINT64 | Указатель на Int64. Этот тип объявляется в Басетсд. h следующим образом:
| ||
плЦид | Указатель на код языка. Этот тип объявлен в WinNT. h следующим образом:
| ||
плонг | Указатель на значение типа Long. Этот тип объявлен в WinNT. h следующим образом:
| ||
плонглонг | Указатель на лонглонг. Этот тип объявлен в WinNT. h следующим образом:
| ||
PLONG_PTR | Указатель на LONG_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PLONG32 | Указатель на LONG32. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PLONG64 | Указатель на LONG64. Этот тип объявляется в Басетсд. h следующим образом:
| ||
POINTER_32 | 32-разрядный указатель. В 32-разрядной системе это собственный указатель. В 64-разрядной системе это усеченный 64-разрядный указатель. Этот тип объявляется в Басетсд. h следующим образом:
| ||
POINTER_64 | 64-разрядный указатель. В 64-разрядной системе это собственный указатель. В 32-разрядной системе это расширенный по знаку 32-разрядный указатель. Обратите внимание, что нельзя считать, что состояние старших битов указателя не является надежным. Этот тип объявляется в Басетсд. h следующим образом:
| ||
POINTER_SIGNED | Указатель со знаком. Этот тип объявляется в Басетсд. h следующим образом:
| ||
POINTER_UNSIGNED | Указатель без знака. Этот тип объявляется в Басетсд. h следующим образом:
| ||
пшорт | Указатель на короткий. Этот тип объявлен в WinNT. h следующим образом:
| ||
PSIZE_T | Указатель на SIZE_T. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PSSIZE_T | Указатель на SSIZE_T. Этот тип объявляется в Басетсд. h следующим образом:
| ||
пстр | указатель на строку, завершающуюся нулем или 8-разрядную Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
птбите | Указатель на тбите. Этот тип объявлен в WinNT. h следующим образом:
| ||
птчар | Указатель на TCHAR. Этот тип объявлен в WinNT. h следующим образом:
| ||
птстр | Пвстр , если определен Юникод , ПСТР в противном случае. дополнительные сведения см. в разделе Windows типы данных для строк. Этот тип объявлен в WinNT. h следующим образом:
| ||
пучар | Указатель на Учар. Этот тип объявляется в Виндеф. h следующим образом:
| ||
PUHALF_PTR | Указатель на UHALF_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
пуинт | Указатель на uint. Этот тип объявляется в Виндеф. h следующим образом:
| ||
PUINT_PTR | Указатель на UINT_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PUINT8 | Указатель на UINT8. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PUINT16 | Указатель на UINT16. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PUINT32 | Указатель на UINT32. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PUINT64 | Указатель на UINT64. Этот тип объявляется в Басетсд. h следующим образом:
| ||
пулонг | Указатель на ulong. Этот тип объявляется в Виндеф. h следующим образом:
| ||
пулонглонг | Указатель на улонглонг. Этот тип объявляется в Виндеф. h следующим образом:
| ||
PULONG_PTR | Указатель на ULONG_PTR. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PULONG32 | Указатель на ULONG32. Этот тип объявляется в Басетсд. h следующим образом:
| ||
PULONG64 | Указатель на ULONG64. Этот тип объявляется в Басетсд. h следующим образом:
| ||
пушорт | Указатель на UShort. Этот тип объявляется в Виндеф. h следующим образом:
| ||
PVOID | Указатель на любой тип. Этот тип объявлен в WinNT. h следующим образом:
| ||
пвчар | Указатель на WCHAR. Этот тип объявлен в WinNT. h следующим образом:
| ||
пворд | Указатель на слово. Этот тип объявляется в Виндеф. h следующим образом:
| ||
пвстр | Указатель на строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
QWORD | 64-разрядное целое число без знака. Этот тип объявляется следующим образом:
| ||
SC_HANDLE | Маркер базы данных диспетчера управления службами. Дополнительные сведения см. в разделе дескрипторы SCM. Этот тип объявляется в Винсвк. h следующим образом:
| ||
SC_LOCK | Блокировка базы данных диспетчера управления службами. Дополнительные сведения см. в разделе дескрипторы SCM. Этот тип объявляется в Винсвк. h следующим образом:
| ||
SERVICE_STATUS_HANDLE | Маркер для значения состояния службы. Дополнительные сведения см. в разделе дескрипторы SCM. Этот тип объявляется в Винсвк. h следующим образом:
| ||
ПРОМЕЖУТОК | 16-разрядное целое число. Диапазон значений — от-32768 до 32767. Этот тип объявлен в WinNT. h следующим образом:
| ||
SIZE_T | Максимальное число байтов, на которое может указывать указатель. Используется для подсчета, который должен охватывать полный диапазон указателя. Этот тип объявляется в Басетсд. h следующим образом:
| ||
SSIZE_T | Подписанная версия SIZE_T. Этот тип объявляется в Басетсд. h следующим образом:
| ||
тбите | Значение WCHAR , если задан Юникод , в противном случае — символ . Этот тип объявлен в WinNT. h следующим образом:
| ||
ГОЛОВК | Значение WCHAR , если задан Юникод , в противном случае — символ . Этот тип объявлен в WinNT. h следующим образом:
| ||
учар | Знакбез знака. Этот тип объявляется в Виндеф. h следующим образом:
| ||
UHALF_PTR | HALF_PTRбез знака. Используйте в структуре, содержащей указатель и два маленьких поля. Этот тип объявляется в Басетсд. h следующим образом:
| ||
UINT | Целое число без знака. Диапазон — от 0 до 4294967295 десятичных знаков. Этот тип объявляется в Виндеф. h следующим образом:
| ||
UINT_PTR | INT_PTRбез знака. Этот тип объявляется в Басетсд. h следующим образом:
| ||
UINT8 | INT8без знака. Этот тип объявляется в Басетсд. h следующим образом:
| ||
UINT16 | Неподписанная INT16. Этот тип объявляется в Басетсд. h следующим образом:
| ||
ЗНАЧЕНИЕМ | Int32без знака. Диапазон — от 0 до 4294967295 десятичных знаков. Этот тип объявляется в Басетсд. h следующим образом:
| ||
UINT64 | Int64без знака. Диапазон — от 0 до 18446744073709551615 Decimal. Этот тип объявляется в Басетсд. h следующим образом:
| ||
ULONG | Длинноецелое без знака. Диапазон — от 0 до 4294967295 десятичных знаков. Этот тип объявляется в Виндеф. h следующим образом:
| ||
улонглонг | 64-разрядное целое число без знака. Диапазон — от 0 до 18446744073709551615 Decimal. Этот тип объявлен в WinNT. h следующим образом:
| ||
ULONG_PTR | LONG_PTRбез знака. Этот тип объявляется в Басетсд. h следующим образом:
| ||
ULONG32 | Неподписанный LONG32. Диапазон — от 0 до 4294967295 десятичных знаков. Этот тип объявляется в Басетсд. h следующим образом:
| ||
ULONG64 | Неподписанный LONG64. Диапазон — от 0 до 18446744073709551615 Decimal. Этот тип объявляется в Басетсд. h следующим образом:
| ||
UNICODE_STRING | Строка Юникода. Этот тип объявляется в Винтернл. h следующим образом:
| ||
USHORT | Короткоецелое без знака. Диапазон — от 0 до 65535 десятичных знаков. Этот тип объявляется в Виндеф. h следующим образом:
| ||
ЖУРНАЛЫ | Порядковый номер обновления (USN). Этот тип объявлен в WinNT. h следующим образом:
| ||
VOID | Любой тип. Этот тип объявлен в WinNT. h следующим образом:
| ||
WCHAR | 16-разрядный символ Юникода. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами. Этот тип объявлен в WinNT. h следующим образом:
| ||
WINAPI | Соглашение о вызовах для системных функций. Этот тип объявляется в Виндеф. h следующим образом:
Функции callback, WinAPIи апиентри используются для определения функций с помощью соглашения о вызовах __stdcall. большинство функций в API Windows объявляются с помощью WINAPI. Вы можете использовать обратный вызов для функций обратного вызова, которые реализуются, чтобы определить функцию как функцию обратного вызова. | ||
СЛОВАМ | 16-разрядное целое число без знака. Диапазон — от 0 до 65535 десятичных знаков. Этот тип объявляется в Виндеф. h следующим образом:
| ||
WPARAM | Параметр сообщения. Этот тип объявляется в Виндеф. h следующим образом:
|
Zlyden Articles — Типы данных и переменные для программирования под Windows
Доброй ночи, сегодня я хочу рассказать о типах данных и именах переменных при
программировании под Windows.
Типы данных.
В Windows-программах вместо стандартных типов данных из C/C++
(int, long, и т.д.) применяются типы данных, определённые в различных
заголовочных файлах. Наиболее часто используемые: HANDLE, HWND, BYTE, WORD,
DWORD, UNIT, LONG, BOOL, LPSTR и LPCSTR. Тип HANDLE обозначает 32-разрядное
целое, используемое в качестве дескриптора. Есть несколько похожих типов данных,
которые имеют ту же длину, что и HANDLE, и начинаются с символа Н. Дескриптор —
это просто число, определяющее некоторый ресурс. Например, тип HWND обозначает
32-разрядное целое — дескриптор окна. Тип BYTE обозначает 8-разрядное беззнаковое
символьное значение, тип WORD — 16-разрядное беззнаковое короткое целое, тип
DWORD — 32-разрядный целочисленный беззнаковый тип, тип UNIT — беззнаковое 32-разрядное целое.
Тип LONG эквивалентен типу long. Тип BOOL обозначает целое и используется,
когда значение может быть либо истинным, либо ложным. Тип LPSTR определяет
указатель на строку, а LPCSTR — константный (const) указатель на строку.
LPTSTR — это TCHAR *, а LPCTSTR — const TCHAR *. Для стандартных типов Microsoft
C не применяется оператор *.
Переменные.
Для имён переменных Microsoft предлагает систему, предусматривающую
обозначение именуемых типов данных (используется префикс).Само имя переменной
начинается с заглавной буквы.
Типы префиксов:
b — BOOL
c — символ (байт)
s — строка (char или CString)
dw — DWORD
f — 16-битный флаг (битовая карта)
fn — функция
h — HANDLE
l — LONG
i — int
lp — длинный указатель
n — целое (16 бит)
p — указатель
pt — точка (два 32-битных целых)
w — WORD
sz — указатель на строку с завершающим нулём
lpsz — длинный указатель на строку с завершающим нулём
fdw — двойное слово, содержащее флаги доступа к файлу
rgb — длинное целое, содержащее комбинацию цветов RGB
Использование префиксов необходимо далеко не всегда, поэтому пишите так, как
вам удобно.
Для именования функций используются имена, состоящие из глаголов
или существительных, первая буква слова — заглавная.
В статье использована информация из
MSDN и windef.h
Информатик БУ — Типы данных Pascal
Pascal – язык со строгой типизацией переменных. Это значит, что мы обязательно должны указывать тип каждой переменной, и не можем присвоить переменной одного типа значение другого типа (если только они не эквивалентны).
В качестве примера возьмем часть программы, которая вычисляет площадь круга по заданному радиусу:
S := r*r*3.14;
Если мы укажем, что у переменной S целочисленный тип, программа будет работать не верно, так как результатом выражения r*r*3.14 будет дробь, и присвоить целочисленной переменной дробное значение мы не можем.
Еще один пример. Программа складывает значение двух переменных:
a := 5;
b := 4;
c := a+b;
Если мы укажем, что a, b и c являются числами, то вполне логично предположить, что после выполнения программы значение c станет равно 9-ти. Но что будет, если a и b являются не числами, а простыми символами, а c – строкой?
a := ‘5’;
b := ‘4’;
c := a+b;
В этом случае мы не можем сложить математически два значения (ну правда, мы же не можем математически сложить две буквы), и символы просто подставятся друг к другу, то есть значение c будет равно ‘54’.
Кроме этого, после запуска программы для каждой переменной в оперативной памяти выделяется некоторое количество байт, которое зависит от типа этой переменной. И значения, которые может принять переменная, ограничены этим количеством байт. К примеру, переменной с типом данных byte выделяется 1 байт памяти, и она может принимать значения от 0 до 255, всего 256, что является количеством вариантов, которые можно закодировать одним байтом. Если же мы укажем для переменной тип byte, но присвоим ей значение, к примеру, 1000, программа работать не будет.
Целочисленные типы
Переменная целочисленного типа может принимать любое целое значение из диапазона значений этого типа. Также является порядковым типом.
Тип | Длина (байт) | Диапазон |
byte | 1 | 0..255 |
shortint | 1 | -128..127 |
integer | 2 | -32768..32767 |
word | 2 | 0..65536 |
longint | 4 | -2147483648..2147483647 |
В заданиях ЕГЭ, как правило, достаточно использовать тип данных integer.
Вещественные типы
К вещественному типу относят дробные числа и числа с плавающей запятой. Тем не менее, мы можем присвоить вещественному типу целое значение.
Тип | Длина (байт) | Диапазон |
single | 4 | 1.5*10-45 — 3.4*1038 |
real | 6 | 2.9*10-39 — 1.7*1038 |
double | 8 | 5*10-324 — 1.7*10308 |
extended | 10 | 3.4*10-4932 — 1.1*104932 |
В заданиях ЕГЭ, как правило, достаточно использовать тип данных real.
Символьный тип
Любой одиночный символ.
Тип | Длина (байт) | Диапазон |
char | 1 | Любой символ кодировки ASCII |
Переменной типа char можно присвоить любую букву, цифру, или любой другой символ стандартной кодировки. Также является порядковым типом.
Строковый тип
Если char — это только один символ, то строка — это набор символов. Строкой может быть, к примеру, слово, состоящее из нескольких букв. Также строки относят к структурным типам.
Тип | Длина (байт) | Диапазон |
string | 256 | 255 символов кодировки ASCII |
Логический тип
Переменная логического типа может принимать только два значения: true или false (истина или ложь). Является порядковым типом.
Тип | Длина (байт) | Диапазон |
boolean | 1 | true, false |
Интервальный тип данных
Интервальный тип указывает, что переменная может принимать значения от одного значения, до другого. К примеру, мы знаем, что переменная может принимать значения только от 5 до 25. Мы можем объявить её тип так:
var
a: 5..25;
Программирование на языке Pascal — тест 2
Главная / Программирование /
Программирование на языке Pascal / Тест 2
Упражнение 1:
Номер 1
Тип данных real
является
Ответ:
 (1) арифметическим 
 (2) базовым 
 (3) конструируемым 
 (4) порядковым  
 (5) структурированным  
Номер 2
Тип данных integer
является
Ответ:
 (1) арифметическим 
 (2) базовым 
 (3) конструируемым 
 (4) порядковым  
 (5) структурированным  
Номер 3
Тип данных boolean
является
Ответ:
 (1) арифметическим 
 (2) базовым 
 (3) конструируемым 
 (4) структурированным  
Упражнение 2:
Номер 1
Типы данныхbyte
иshortint
являются:
Ответ:
 (1) эквивалентными 
 (2) совместимыми 
 (3) совместимыми по присваиванию 
Номер 2
Типы данныхdouble
иreal
являются:
Ответ:
 (1) эквивалентными 
 (2) совместимыми 
 (3) совместимыми по присваиванию 
Номер 3
Типы данныхreal
иinteger
являются:
Ответ:
 (1) эквивалентными 
 (2) несовместимыми 
 (3) совместимыми по присваиванию 
Упражнение 3:
Номер 1
Какой тип будет иметь результат выражения a+b при a:word, b:integer?
Ответ:
 (1) byte 
 (2) word 
 (3) shortint 
 (4) integer 
 (5) longint 
Номер 2
Какой тип будет иметь результат выраженияa+b
приa:byte
,b:shortint
?
Ответ:
 (1) byte 
 (2) word 
 (3) shortint 
 (4) integer 
 (5) longint 
Номер 3
Какой тип будет иметь результат выражения a+b при a:shortint, b:word?
Ответ:
 (1) byte 
 (2) word 
 (3) shortint 
 (4) integer 
 (5) longint 
Упражнение 4:
Номер 1
Какие из вариантов расстановки скобок в выражении a and b shr c mod a + c * a shl - b div a не меняют порядок выполнения операций?
Ответ:
 (1) (((a and b)shr c)mod a)+(c*((a shl(-b))div a))
 
 (2) a and b shr c mod a +(((c*a)shl(-b))div a)
 
 (3) ((a and b)shr c)mod a+c*(a shl -b div a)
 
 (4) (a and(b shr(c mod a)))+(c*(a shl(-(b div a))))
 
 (5) a and b shr c mod a+(c*(a shl((-b)div a)))
 
 (6) a and b shr c mod a+((c*a) shl(-(b div a)))
 
Номер 2
Какой из вариантов расстановки скобок в выражении a + b or c shl a * c - a mod b > a не меняет порядок выполнения операций?
Ответ:
 (1) a+(((b or c)shl a)*c)-(a mod b)>a 
 (2) a+(b or((c shl a)*c))-a mod(b>a) 
 (3) a+(b or((c shl a)*c))-(a mod b)>a 
 (4) (a+b or c shl a*c-a mod b)>a 
 (5) (a+b or c shl a*c(-a)mod b)>a 
Номер 3
Какие из вариантов расстановки скобок в выражении a * b + not c > a mod c * a shl b xor a не меняют порядок выполнения операций?
Ответ:
 (1) a*b+(not c)>(((a mod c)*a)shl b)xor a
 
 (2) a*b+(not c)>(a mod((c*a)shl b))xor a
 
 (3) ((((a*(b+not c)>a)mod c)*a)shl b)xor a
 
 (4) (a*b+not c)>(a mod c*a shl b)xor a
 
 (5) (a*b)+(not c)>(a mod c)*(a shl b)xor a
 
 (6) (a*b)+(not c)>(a mod (c*(a shl(b xor a))))
 
Pascal. Простые типы данных — Pascal
При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).
Целочисленный тип (integer)
В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.
Встроенные целочисленные типы.
Тип
|
Диапазон
|
Формат
|
shortint
|
-128 ..+127
|
8 битов со знаком
|
integer
|
-32768 .. 32767
|
16 битов со знаком
|
longint
|
-2147483648 +2147483647
|
32 бита со знаком
|
byte
|
0 .. 255
|
8 битов без знака
|
word
|
0 .. 65535
|
16 битов без знака
|
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
- Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
- В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
- Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
Операции совершаемые над целыми числами:
“+” — сложение
“-“ — вычитание
“*” — умножение
SQR — возведение в квадрат
DIV — после деления отбрасывает дробную часть
MOD — получение целого остатка после деления
ABS — модуль числа
RANDOM(X)-получение случайного числа от 0 до Х
Пример:
а:=100; b:=60; a DIV b результат - 1 а MOD b результат - 40
Описываются переменные целого типа следующим образом:
var список переменных: тип;
Например: var а,р,n:integer;
Вещественный тип(real)
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения — m, b и e — таким образом, что m*bе, где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.
Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений
Диапазон и десятичные цифры для вещественных типов
Тип
|
Диапазон
|
Цифры
|
Real
Single
Duble
Extende
comp
|
2.9×10Е-39 до 1.7×10Е 38
1.5×10Е-45 до 3.4×10Е 38
5.0×10Е-324 до 1.7×10Е 308
3.4×10Е-493 до 1.1×10Е 403
-2Е 63 до 2Е 63
|
от 11 до 12
от 7 до 8
от 15 до 16
от 19 до 20
от 19 до 20
|
Операции совершаемые над вещественными числами:
- Все операции допустимые для целых чисел.
- SQRT(x)-корень квадратный из числа х.
- SIN(X), COS(X), ARCTAN(X).
- LN(X)-натуральный логарифм.
- EXP(X)-экспонента Х (ех).
- EXP(X*LN(A))-возведение в степень (Ах).
- Функции преобразования типов:
- TRUNC(X)-отбрасывает дробную часть;
- ROUND(X)-округление.
- Некоторые правила арифметических операций:
- Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
- Все составные части выражения записываются в одну строку.
- Используются только круглые скобки.
- Нельзя подряд ставить два арифметических знака.
Описываются переменные вещественного типа следующим образом:
var список переменных: тип;
Например:
var d,g,k:real;
Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:’’’’.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
> , < , >=, <=, <> .
Например: ‘A’ < ‘W’
Функции, которые применимы к символьным переменным:
- ORD(X) — определяет порядковый номер символа Х.
Пример:
ord(‘a’)=97;
- CHR(X) — определяет символ по номеру.
Пример:
chr(97)=’a’;
- PRED(X) — выдает символ, стоящий перед символом Х.
Пример:
pred(‘B’)=’A’;
- SUCC(X) — выдает символ, следующий после символа Х.
Пример:
succ(‘A’)=’B’;
Перечислимый тип
Перечислимый тип данных назван так потому, что задается в виде перечисления констант в строго определенном порядке и в строго определенном количестве. Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значение любой из этих констант. Описание перечислимого типа имеет вид:
Type <имя типа>=(список констант); Var <имя переменной>:<имя типа>;
где <список констант> — это особый вид констант, задаваемых через запятую и имеющих свой порядковый номер, начиная с 0.
Например:
type направление=(север, юг, запад, восток); месяц=(июнь,июль,август,январь); емкость=(ведро,бочка,канистра,бак); var поворот:направление; отъезд:месяц; объем:емкость;
или так:
var поворот:(свер, юг, запад, восток); отъезд:(июнь, июль, август, январь); объем:(ведро, бочка, канистра, бак);
Можно выполнить такие операторы присваивания:
поворот:=юг; отъезд:=август; объем:=бак;
но нельзя выполнять смешанные присваивания:
отъезд:=юг; объем:=август;
К переменным перечислимого типа применимы следующие функции:
1. ORD — порядковый номер
2. PRED — предшествующий элемент
3. SUCC — последующий элемент.
Пример:
PRED(бочка)=ведро; SUCC(юг)=запад; ORD(июль)=1;
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения: север < юг, июнь < январь имеют значения TRUE, а юг>запад и бак<бочка значение FАLSE.
Ограниченный тип
Если переменная принимает не все значения своего типа, а только в некотором диапазоне, то ее можно рассматривать как переменную ограниченного типа. Каждый ограниченный тип задается путем накладывания ограничения на базовые типы.
Описывается так:
TYPE <имя типа>=константа1..константа2
При этом должны выполняться следующие правила:
- Обе ограниченные константы должны быть одного типа.
- В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
- Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
Пример:
type index=0..63; letter=’a’..’z’; var char1,char2:letter; a,g:index;
Можно описывать сразу в разделе описания переменных:
var a,g:0..63; char1,char2:’a’..’z’.
Типы данных Delphi
Теперь обсудим типы данных Delphi, которые программист использует при написании программы. Любая программа на Delphi может содержать данные многих типов:
- целые и дробные числа,
- символы,
- строки символов,
- логические величины.
Целый тип Delphi
Библиотека языка Delphi включает в себя 7 целых типов данных: Shortint, Smallint, Longint, Int64, Byte, Word, Longword, характеристики которых приведены в таблице ниже.
Вещественный тип Delphi
Кроме того, в поддержку языка Delphi входят 6 различных вещественных типов (Real68, Single, Double, Extended, Comp, Currency), которые отличаются друг от друга, прежде всего, по диапазону допустимых значений, по количеству значащих цифр, по количеству байт, которые необходимы для хранения некоторых данных в памяти ПК (характеристики вещественных типов приведены ниже). Также в состав библиотеки языка Delphi входит и наиболее универсальный вещественный тип — тип Real, эквивалентный Double.
Символьный тип Delphi
Кроме числовых типов, язык Delphi располагает двумя символьными типами:
Тип Ansichar — символы c кодировкой ANSI, им ставятся в соответствие числа от 0 до 255;
Тип Widechar — символы с кодировкой Unicode, им ставятся в соответствие числа от 0 до 65 535.
Строковый тип Delphi
Строковый тип в Delphi обозначается идентификатором string. В языке Delphi представлены три строковых типа:
Тип Shortstring — присущ статически размещаемым в памяти ПК строкам, длина которых изменяется в диапазоне от 0 до 255 символов;
Тип Longstring — этим типом обладают динамически размещаемые в памяти ПК строки с длиной, ограниченной лишь объемом свободной памяти;
Тип WideString — тип данных, использующийся для того, чтобы держать необходимую последовательность Интернациональный символов, подобно целым предложениям. Всякий символ строки, имеющей тип WideString, представляет собой Unicode-символ. В отличие от типа Shortstring, тип WideString является указателем, который ссылается на переменные.
Логический тип Delphi
Логический тип соответствует переменным, которые могут принять лишь одно из двух значений: true, false. В языке Delphi логические величины обладают типом Boolean. Вам были представлены основные типы данных Delphi. Движемся дальше.
Похожие записи:
Программирование контроллера simatic s 7-300 программирование панели человеко-машинного интерфейса tp -177 a
ГОУ ВПО Уральский
государственный технический университет
– УПИ имени первого Президента России
Б.Н. Ельцина
Кафедра «Электронное
машиностроение»
Программирование
контроллера Simatic
S7-300
Программирование панели
человеко-машинного интерфейса
TP-177A
Методические
указания
к лабораторным
работам
по дисциплине
«Технические средства автоматизации»
для студентов
специальности
«Автоматизация
технологических процессов и производств»
Екатеринбург 2008
Описание лабораторного стенда
Лабораторный стенд выполнен на
базе оборудования промышленной
автоматизации фирмы Siemens
(Германия) и включает в себя программируемый
контроллер Simatic S7-300 CPU
313C, сенсорную HMI-панель1TP-177A,
персональный компьютер, адаптер
интерфейсов USB-MPI
и панель имитатора объекта управления.
Рис.1. Функциональная схема
лабораторного стенда
Контроллер состоит из блока
питания PS-307
и процессорного модуля CPU-313C,
имеющего встроенные входы и выходы.
Блок питания преобразует напряжение
электрической сети 220 В переменного
тока в напряжение 24 В постоянного тока,
используемое для питания контроллера,
HMI-панели,
а также элементов имитатора объекта
управления. На передней панели блока
питания находится выключатель.
Всего модуль CPU-313C
имеет 24 дискретных входов, 16 дискретных
выходов, 5 аналоговых входов и 2 аналоговых
выхода. В лабораторных работах используется
3 дискретных входа (условно обозначим
их A,
B и
С), 3 дискретных выхода (условно обозначим
их X,
Y и
Z),
1 аналоговый вход (условно обозначим
его R)
и 1 аналоговый выход (условно обозначим
его H).
Дискретные логические сигналы (0/24 В)
подаются на входы A,
B,
C
от трёх переключателей П1, П2, П3
соответственно. Дискретные логические
сигналы (0/24 В) с выходов X,
Y,
Z
управляют лампами Л1, Л2, Л3 соответственно.
Аналоговый сигнал (0…10 В) приходит на
вход R
от реостата Р. Аналоговый сигнал (0…10
В) с выхода H
управляет микродвигателем постоянного
тока Д.
HMI-панель
получает питание (24 В) от блока PS-307
через отдельный тумблер (расположен
ниже панели). Панель может как отображать
информацию о работе управляемого
объекта, так и использоваться в качестве
задающего устройства. На экране HMI-панели
могут программироваться сенсорные
кнопки, чувствительные к прикосновению,
с помощью которых оператор системы
может подавать в контроллер управляющую
информацию.
Контроллер и HMI-панель
взаимодействуют друг с другом, через
последовательный интерфейс MPI
(выполненный на базе электрического
интерфейса RS-485).
Интерфейс MPI
является многоточечным, поэтому к общей
шине RS-485
кроме контроллера и HMI-панели
можно подключить третье устройство.
Таким устройством в лабораторном стенде
является персональный компьютер, который
используется как программатор контроллера
и HMI-панели
(поскольку компьютер не имеет интерфейса
MPI,
он подключается через адаптер USB-MPI).
Для разработки и загрузки программ
на компьютере установлено необходимое
программное обеспечение – пакет Step-7
Lite
(для программирования контроллеров
Simatic
S7-300)
и пакет WinCC
Flexible
(для программирования HMI-панелей,
в частности панели TP-177A).
Среда программирования Step-7
Lite
Проект в Step-7
Lite
состоит из собственно программы
контроллера и набора различных параметров,
связанных с его работой. В среде Step-7
Lite
можно создать новый проект или открыть
существующий проект (на рис.2 показан
вид рабочей среды Step-7
Lite
с открытым проектом).
Окно проекта (см.рис.2) содержит
ссылки на несколько страниц, в частности
Hardware
(страница аппаратной конфигурации
системы), Symbol
Table
(страница описания переменных программы),
Program
– папка модулей программы. На рис.2 в
этой папке содержится только один модуль
OB1
– это основной программный модуль,
который выполняется контроллером
циклически. Один цикл работы контроллера,
включающий в себя считывание входных
сигналов, выполнение модуля OB1
и установку выходных сигналов, называется
циклом сканирования. Время цикла
сканирования зависит от сложности
программы и обычно составляет от
нескольких миллисекунд до нескольких
десятков миллисекунд.
На рис.2 показано открытое окно
программы (модуля OB1).
В лабораторных работах программы будут
разрабатываться на языке Ladder
Logic
(лестничная логика). Элементы для
составления программы находятся в окне
библиотеки элементов и могут перетаскиваться
в окно программы с помощью мыши.
Основное
меню и кнопки управления
Окно связи с
контроллером
Окно программы
Окно проекта
Окно библиотеки элементов
Рис.2. Среда программирования
Step
7 Lite
Типы данных и адресация памяти
контроллера
Память данных контроллера
разделяется на несколько областей.
Входная память (I-память)
связана с дискретными входами контроллера.
В каждом цикле сканирования контроллер
автоматически считывает состояния
своих дискретных входов и записывает
информацию о них во I-память.
Выходная память (Q-память)
связана с дискретными выходами
контроллера. В каждом цикле сканирования
контроллер автоматически устанавливает
состояния выходных ключей в соответствии
с информацией записанной в Q-памяти.
Каждому дискретному входу (выходу)
соответствует отдельная ячейка входной
(выходной) памяти ёмкостью 1 бит. Такой
тип данных называется логическим (в
Step-7
он называется типом Bool).
В таблице 1 приведены адреса битовых
ячеек памяти, соответствующих дискретными
входам и выходам, которые используются
в лабораторном стенде.
Таблица 1
Условное | Адрес |
A | I125.3 |
B | I125.4 |
C | I125.5 |
X | Q125.0 |
Y | Q125.1 |
Z | Q125.2 |
Структура адреса битовой ячейки,
в которой хранятся данные типа Bool,
следующая – сначала записывается буква,
обозначающая область памяти, затем
номер байта этой области (байты нумеруются
с нуля), точка и номер бита в данном байте
(биты также нумеруются с нуля, поэтому
номер бита может быть 0…7).
Для хранения промежуточных
данных не связанных непосредственно с
входами м выходами контроллера можно
использовать M-память.
Принцип адресации отдельных битов
M-памяти
такой же как Q-памяти
и I-памяти
(например, M0.0,
M0.1
и т.д.).
Кроме типа Bool
используются и более сложные типы
данных. Тип Byte
занимает 1 байт памяти, данные этого
типа представляют собой целые числа в
диапазоне 0…255. Для адресации отдельных
байтов памяти записывается буква области
памяти, затем буква B
(говорящая о том, что адресуется 1 байт)
и номер байта – например (MB0,
MB1,
MB2
и т.д.).
Тип Word
представляет собой двухбайтное целое
число в диапазоне 0…65535. Вторая буква в
адресе для такого типа будет W,
а число представляет собой адрес первого
байта из двух – например, MW10
адресует данные типа Word,
которые расположены в байтах 10 и 11
M-памяти.
Тип Int
представляет собой двухбайтное целое
число со знаком в диапазоне –32768…32767.
Адресуется также как тип Word
(например, MW0,
MW2,
MW4
и т.д.). Следует помнить, что данные типов
Word
и Int
не всегда совместимы друг с другом.
Типы Dword
и Dint
представляет собой четырехбайтное
целое число без знака и со знаком
соответственно. Для адресации четырёх
байтов памяти второй буквой в адресе
записывается D,
а номер указывает на первый из четырёх
байтов (например, MD0,
MD4,
MD8
и т.д.).
Тип Real
представляет собой вещественное число
(записанное в формате с плавающей точкой)
и занимающее в памяти 4 байта. Адресация
данных типа Real
такая же, как типов Dword
и Dint
(например по адресу MD12
может находиться число любого из
4-байтных типов, занимающее байты 12, 13,
14, 15).
Аналоговый вход принимает
аналоговый сигнал (напряжение 0…10 В),
который подаётся на аналого-цифровой
преобразователь, формирующий двухбайтный
код типа Int.
Этот код записывается в PI-память.
Адрес двухбайтной ячейки памяти,
связанной с аналоговым входом R
– PIW752.
Аналоговый выход получает выходной
сигнал (напряжение 0…10 В) от цифро-аналогового
преобразователя, на входе которого
двухбайтный код типа Int.
Этот код берется из PQ-памяти.
Адрес двухбайтной ячейки памяти,
связанной с аналоговым выходом H
– PQW752.
В Step-7
возможна символическая адресация, т.е.
вместо записи адреса можно записывать
связанное с этим адресом имя (выбираемое
по усмотрению программиста). Для
установления связи имен и адресов
заполняется таблица Symbol
Table
(рис.3)
Рис.3. Пример таблицы Symbol
Table.
Программирование логических
выражений и триггеров
Программа контроллера разделяется
на блоки (Network),
которые выполняются последовательно
сверху вниз. Каждый блок начинается от
вертикальной линии. Принято, что на этой
линии всегда высокий уровень сигнала
(логическая единица). Чтобы запрограммировать
логическое выражение достаточно
использовать 2 вида контактов (нормально
разомкнутый и нормально замкнутый) и
катушку (см. рис. 4).
Рис.4. Программирование логического
выражения
Каждый контакт связан со своей
переменной типа Bool.
Значение этой переменной определяет
состояние контакта. Нормальное состояние
контакта – это состояние, когда его
переменная равна логическому нулю.
Когда переменная контакта равна
логической единице, состояние контакта
противоположно нормальному. Катушка
одним выводом подключается к контактной
схеме, а другим – к «земле», т.е. точке
с нулевым потенциалом. В зависимости
от состояния контактов на катушке может
оказаться высокое или низкое напряжение.
Соответственно переменной катушки
(тоже типа Bool)
будет присвоено значение логической
единицы или логического нуля.
При составлении схемы удобно
использовать кнопки, расположенные в
верхней части экрана рабочей среды
Step-7
(рис.5). Обратите внимание на кнопки
Branch
Open
и Branch
Closed.
С их помощью можно создавать параллельные
ветви схемы. Для удаления какой-либо
части схемы её необходимо выделить с
помощью мыши и нажать Delete.
Рис.5. Кнопки для составления
лестничной схемы.
Для вставки нового блока Network
используйте команду Insert
Network,
которую можно запустить из меню,
появляющегося при щелчке правой кнопкой
мыши. Чтобы удалить весь блок Network
выделите слово Network
щелчком мыши и нажмите Delete.
На рис.6 показан пример использования
элемента Not,
который позволяет выполнить инверсию
всего логического выражения.
Для программирования RS-триггера
используются включающая и выключающая
катушки (рис.7).
Рис.6. Программирование логического
выражения
Рис.7. Пример программировании
RS-триггера
Катушка установки (S-катушка)
при подаче на неё высокого
уровня напряжения установит свою
переменную в единицу (S-катушка
может только устанавливать в единицу,
но не может сбрасывать в ноль). Катушка
сброса (R-катушка)
при подаче на неё высокого
уровня напряжения сбросит свою переменную
в ноль (R-катушка
может только сбрасывать в ноль, но не
может устанавливать в единицу). Применение
S-катушки
и R-катушки
для одной и той же переменной позволяет
реализовать RS-триггер.
Так в примере на рис.7 переменная Z
будет установлена в 1 если хотя бы одна
их переменных A
или B
равна 1, и будет сброшена в ноль, если
переменная С равна единице. Если же
одновременно выполняются условия сброса
и установки, то приоритетнее окажется
тот блок Network,
который расположен ниже. Если в примере
на рис.7 A=1
и C=1,
то переменная Z
будет сброшена в ноль.
Рис.8. Пример использования
детекторов
положительного и отрицательного
фронта
Детектор положительного фронта
(P)
левым выводом подключается к контактной
схеме, а правым – к катушке. Переменная
детектора хранит значение сигнала на
левом выводе, которое было в предыдущем
цикле сканирования. Если в текущем цикле
на левом выводе 1, а в предыдущем был 0,
то это называется положительным фронтом
сигнала. В этом случае на правом выводе
будет установлена 1 (но только в одном
цикле, когда произошел переход входного
сигнала из 0 в 1). Детектор отрицательного
фронта (N)
устанавливает выходной сигнал в 1, если
происходит переход входного сигнала
из 1 в 0 (единица на выходе также сохраняется
только на 1 цикл).
Элементы сравнения
Элементы сравнения расположены
в папке Comparator
библиотеки элементов. Каждый элемент
сравнения имеет логический вход, два
входа сравниваемых величин и один
логический выход. Элементы сравнения
делятся по виду выполняемой операции:
EQ
– элемент, проверяющий равенство, NE
– элемент, проверяющий неравенство, GT
– элемент, проверяющий условие «больше»,
LT
– элемент, проверяющий условие «меньше»,
GE
– элемент, проверяющий условие «больше
или равно», LE
– элемент, проверяющий условие «меньше
или равно». Элементы сравнения также
делятся по типу сравниваемых данных: I
– для данных типа Int,
D –
для данных типа Dint,
R –
для данных типа Real.
Рис.9. Пример использования
элемента сравнения.
Так например (рис.9), элемент GE_I
– это элемент, проверяющий условие
«больше или равно» для данных типа Int.
Логический вход используется для
активизации элемента (если он подключен
непосредственно к линии высокого уровня
сигнала, то сравнение осуществляется
в каждом цикле сканирования). На логическом
выходе появляется результат сравнения
– 0, если условие ложно и 1, если оно
истинно. В примерен на рис.9 логическая
переменная, находящаяся по адресу M5.6
получит значение 1, если переменная типа
Int,
находящаяся по адресу MW26
имеет значение большее или равное 20 (в
противном случае M5.6
получит значение 0).
Пересылка данных и преобразование
типов
Для пересылки данных используется
элемент Move.
Этот элемент имеет логические вход и
выход, вход источника данных и выход
приёмника данных. На вход источника
данных может подключаться переменная
или константа, а на выход приёмника
данных только переменная. Операция
пересылки происходит при условии, что
на логический вход приходит сигнал 1.
Если операция выполнена, то 1 появляется
на логическом выходе. Таким образом,
элементы Move
можно соединять по цепочке, они будут
выполняться слева направо.
Рис.10. Пример пересылки данных
и преобразования типов
В примере на рис.10 целочисленной
переменной с адресом MW2
присваивается значение 23, а вещественной
переменной с адресом MD10
присваивается значение –1,2. Также рис.10
показывает пример преобразования типов.
Элемент Round
округляет вещественное число (переменная
MD14
типа Real)
до ближайшего целого. Результат
записывается в переменную MD50
типа Dint.
Следующий элемент Move
выполняет преобразование типа Dint
(переменная MD50)
в тип Int
(переменная MW0).
Различные элементы преобразования
типов находятся в папке Converter
библиотеки элементов.
Арифметические операции
Элементы арифметических операций
находятся в папках библиотеки элементов
Integer
fct.
(для целых чисел) и Floating
point
fct.
(для вещественных чисел). В число этих
элементов входят: ADD
– элемент сложения, SUB
– элемент вычитания, MUL
– элемент умножения, DIV
– элемент деления. Также в обозначении
элемента присутствует буква, обозначающая
тип данных для аргументов операции: I
– тип Int,
DI
– тип Dint,
R –
тип Real.
Перечисленные элементы имеют 2 входа
для аргументов операции и 1 выход для
результата, а также логический вход и
логический выход (назначение логических
входа и выхода такое же как у элемента
Move).
На рис.11 показан пример арифметической
операции с целыми числами.
Рис.11. Пример выполнения
арифметической операции
с целыми числами:
Таймер с задержкой включения
Таймер –
программный элемент, предназначенный
для реализации временных задержек при
выполнении программы. Адрес таймера
записывается в виде буквы T
с номером таймера (0…255), например Т101,
Т102 и т.д. На рис.12 показан вид элемента
S_ODT
(таймер с задержкой включения) с пояснением
назначения входов и выходов и типа
данных на входах и выходах. Данный
таймер, а также другие виды таймеров
находятся в папке Timers
библиотеки элементов.
Время, которое будет отсчитывать
таймер, задаётся на входе TV
константой специального типа S5Time
(например, S5T#2S
– время 2 секунды, S5T#5S500МS
– время 5 секунд, 500 мс или 5,5 секунд).
Рис.12. Элемент «таймер с задержкой
включения».
Входы S,R
и выход Q
предназначены для логических сигналов.
В исходном состоянии на выходе Q
сигнал 0 (таймер сброшен). Таймер
активизируется (начинает отсчёт времени)
при условии положительного фронта
сигнала (переход от 0 к 1) на входе S
при условии, что на входе R
сигнал 0. Отсчет времени продолжается
при том же условии (на входе S
– 1, на входе R
– 0). Когда таймер отсчитает заданное
время, сигнал на выходе Q
станет равным 1 (таймер установлен).
Сброс таймера происходит в следующих
случаях. Когда сигнал на входе S
станет равным нулю, сигнал на выходе Q
также станет равным нулю (причём без
задержки по времени). Также сброс
произойдет если на вход R
придёт сигнал 1, причём если затем сигнал
на входе R
снова станет равным нулю, а сигнал на
входе S
остаётся равным 1, то таймер не
активизируется, т.к. не было положительного
фронта на входе S.
Если сигнал на входе S
станет равным 0 (или сигнал на входе R
станет равным 1), когда таймер активен
и производит отсчёт времени, то он
переходит в неактивное состояние, отсчёт
времени прекращается, на выходе Q
остаётся сигнал 0. Работу таймера поясняют
временные диаграммы (рис.13).
Рис.13. Временные диаграммы работы
таймера
Возрастающий счётчик
Счётчик –
программный элемент, предназначенный
для подсчёта событий при выполнении
программы и запуска необходимых действий,
когда произойдет заданное число этих
событий. Адрес счётчика записывается
в виде буквы C
с номером (0…255), например С10, С12 и т.д. На
рис.14 показан вид элемента S_CU
(возрастающий счётчик) с пояснением
назначения входов и выходов и типа
данных на входах и выходах. Данный
счётчик, а также другие виды счётчиков
находятся в папке Counter
библиотеки элементов.
Рис.14. Элемент «возрастающий
счётчик».
Предустановленное значение
задаётся с помощью переменной типа Word
(в которую предварительно записывается
необходимое значение) или с помощью
константы (например, C#20
– значение 20, C#1
– значение 1). Если на входе S
будет положительный фронт сигнала
(установка счётчика), и при этом на входе
CU
сигнал 0, то текущее значение счётчика
становится равным предустановленному
значению. Если при установке счётчика
на входе CU
сигнал 1, то текущее значение счётчика
становится равным предустановленному
значению плюс единица.
При каждом положительном фронте
сигнала на входе CU
текущее значение счётчика увеличивается
на 1 (текущее значение не может возрастать
более 999). Если текущее значение счётчика
больше нуля, то на выходе Q
будет сигнал 1, а если текущее значение
счётчика равно нулю, то на выходе Q
будет сигнал 0.
Заготовка для создания проекта
в Step-7
Lite
При выполнении лабораторной
работы требуется создать новый проект.
Рекомендуется использовать для создания
нового проекта проект-заготовку, в
котором уже настроены все необходимые
параметры соединения с контроллером
для загрузки программы, описана аппаратная
конфигурация системы, а также есть
несколько полезных программных блоков.
Проект-заготовка называется Step7_Empty.
Перед началом работы его следует открыть
и сохранить под другим именем, после
чего можно приступать к написанию
программы.
Проект заготовка имеет таблицу
переменных, которые можно использовать
при выполнении лабораторной работы
(рис.15).
Рис.15. Таблица переменных
проекта-заготовки
В первом блоке проекта-заготовки
Network
1 (рис.16) определяется значение логической
переменной FirstScan.
Данная переменная получает значение 1
в первом цикле сканирования (при запуске
программы) и значения 0 во всех последующих
циклах сканирования. Её можно использовать
для выполнения однократных действий в
самом начале работы контроллера.
Второй блок Network
2 (рис.16) используется для преобразования
кода аналогового входа R
в величину напряжения в вольтах. Результат
записывается в переменную Uin,
которая может использоваться далее в
программе.
Третий блок Network
3 (рис.16) используется для преобразования
вещественной переменной Uout
(куда предварительно должно быть записана
величина напряжения в вольтах) в код
который выводится на аналоговый выход
H.
Четвертый блок Network
4 (рис.16) преобразует величину времени
в секундах (переменная NumSec)
в формат S5Time
(переменная TimeS5).
Рис.16. Программные блоки
проекта-заготовки
Загрузка проекта Step-7
в контроллер.
Управление режимом работы
контроллера
Для загрузки проекта, созданного
в среде Step-7
Lite,
в контроллер необходимо включить питание
контроллера (перевести переключатель
на блоке питания в верхнее положение).
В результате должен загореться светодиод
DC
24 V
на блоке питания, а также светодиоды DC
5V
и STOP
на процессорном модуле CPU-313C
(переключатель режимов на процессорном
модуле находится в положении STOP).
Затем необходимо установить соединение
компьютера с контроллером с помощью
кнопки Connect
Online
(см. рис.17). Появится сообщение о том, что
соединение установлено. На панели связи
с контроллером в среде Step-7
Lite
загорится индикатор режима STOP
(см. рис.17). Окно проекта переключится
на страницу Online
CPU
где показываются модули проекта уже
загруженные в контроллер. Если загруженный
модуль не соответствует одноименному
модулю проекта, то это показывается
специальным значком (см. рис.17).
Рис.17. Фрагмент рабочей среды
Step-7
Lite
после установления связи с
контроллером
Загружать в контроллер можно
как все модули проекта сразу, так и
отдельные модули. Для загрузки отдельного
модуля (например модуля OB1)
по его названию на странице Online
CPU
следует выполнить щелчок правой кнопкой
мыши и в открывшемся меню выбрать команду
Download
to
CPU
(см. рис.18).
Рис.18. Загрузка модуля OB1
в контроллер
Для загрузки всех файлов проекта
можно воспользоваться кнопкой Download
(см.рис.17). После щелчка по этой кнопке
появится окно Download
to
CPU
(рис.19). Далее можно выбрать необходимые
модули для загрузки (или все модули,
щелкнув мышью по кнопке All)
и запустить процесс загрузки с помощью
кнопки Upload.
Рис.19. Окно загрузки проекта
После загрузки модулей проекта
в контроллер на странице Online
CPU
специальный значок (2 зеленых квадрата)
показывает, что загруженный модуль
совпадает одноименным с модулем проекта
(см. рис.20). После этого можно запускать
программу контроллера на выполнение,
для чего контроллер необходимо переключить
из режима STOP
в режим RUN
(переключатель на передней панели
процессорного модуля переводится в
верхнее положение, гаснет светодиод
STOP,
загорается светодиод RUN).
На панели связи с контроллером в среде
Step-7
Lite
также происходит переключение индикаторов
(см. рис.20).
Рис.20. Фрагменты рабочей среды
Step-7
Lite
после окончания загрузки проекта
и переключения в режим RUN
Если в дальнейшем потребуется
частое переключение контроллера из
режима RUN
в режим STOP,
то лучше не использовать переключатель
на контроллере, а переключаться из
рабочей среды Step-7
Lite
с помощью кнопок RUN
и STOP
(при этом переключатель на контроллере
должен всё время находиться в положении
RUN).
Основы работы с пакетом WinCC
Flexible
Пакет WinCC
Flexible
предназначен для программирования
HMI-панелей
фирмы Siemens,
в частности сенсорной панели TP177A.
На рис.21 показаны основные окна среды
разработки WinCC.
Проектирование интерфейса
HMI-панели
заключается в размещении на главном
экране необходимых объектов и установке
свойств этих объектов. Если на главном
экране разместить какой-либо объект и
выделить его, то в окне свойств будут
отображаться свойства этого объекта.
Окно свойств состоит из нескольких
страниц: General
(основные свойства), Properties
(свойства внешнего вида), Events
(события) и т.д. Из окон проекта главным
образом будут использоваться Main
Screen
(главный экран) и Tags
(тэги).
Тегом называется переменная,
имеющая имя и тип данных, связанная с
определённым объектом. Теги бывают
внешние и внутренние. Внешний тег связан
с определённой областью памяти
контроллера, связанного с HMI-панелью,
и предназначен для обмена информацией
между контроллером и HMI-панелью.
Внутренний тег используется только
внутри проекта HMI-панели
и не имеет связи с памятью контроллера.
Каждый тэг имеет следующие
свойства – Name
(имя – задаётся по усмотрению программиста),
Connection
(соединение – для внешних тегов в это
свойство задаётся имя соединения между
контроллером и HMI-панелью,
например Connection_1;
для внутренних тегов задаётся Internal
Tag),
Data
type
(тип данных, например Bool,
Int,
Word
и т.д.), Address
(адрес в памяти контроллера – только
для внешних тегов), Acquisition
Time
(время обновления – только для внешних
тегов; это время через которое HMI-панель
обновляет значение тега, связываясь с
контроллером).
Рис.21.
Среда разработки проекта WinCC
Flexible
Рис.22. Пример таблицы тэгов.
Некоторые объекты не имеют тегов.
Они выполняют информационно-декоративную
роль и предназначены для отображения
на экране панели неизменного текста и
графических изображений. К графическим
объектам относятся объекты Line
(линия), Ellipse
(эллипс), Cycle
(круг) и Rectangle
(прямоугольник). Для вывода текстовых
надписей можно использовать объект
Text
Field.
В окне свойств перечисленных объектов
можно установить их необходимый вид
(задать точные координаты их расположения
на экране, установить толщину линий,
цвет заливки, размер шрифта и т.д.).
Рис.23. Примеры объектов
текстово-графического оформления экрана
Рассмотрим объекты, используемые
для ввода и вывода данных.
Объект Switch
(переключатель) имеет
вид прямоугольной кнопки (рис. 24), которая
может находиться в двух состояниях –
нажатом и отжатом. Переключение
осуществляется прикосновением к
соответствующей области панели (сенсорное
воздействие). Основными свойствами
объекта Switch
(далее рассматриваем только переключатели
с текстовыми надписями) являются: Text
ON
(текст выводимый на переключателе в
нажатом состоянии), Text
OFF
(текст выводимый на переключателе в
отжатом состоянии), Tag
(имя тега – обычно это логическая
переменная, тэг должен быть предварительно
описан в таблице), Value
ON
(значение тэга во включенном состоянии
– для логического тэга это значение
1).
Рис.24. Внешний вид объекта Switch
Для объекта Switch
можно также установить реакцию на
определённые события. Для этого в окне
свойств необходимо переключиться на
страницу Events.
Такими событиями могут быть: Change
(изменение значения), Switch
on
(включение), Switch
off
(выключение). Для события (на той же
странице Events)
выбирается функция обработки события.
Рассмотрим, например, функцию Increase
Value
(увеличение значения). Выбрав эту функцию,
необходимо установить два её параметра:
Tag
(имя тега, значение которого будет
увеличиваться при наступившем событии),
Value
(величина, на которую будет увеличено
это значение).
Объект Button
(кнопка) по своему виду аналогичен
объекту Switch,
но в отличие от объекта Switch
обладает свойством самовозврата (т.е.
не фиксируется в нажатом положении).
Основные свойства текстовой кнопки:
Text
OFF
– выводимый текст в ненажатом состоянии,
Text
ON
– выводимый текст в нажатом состоянии.
Кнопка в отличие от переключателя не
имеет свойства Tag.
Тем не менее, она может воздействовать
на значения тегов через события. На
странице Events
окна свойств кнопки можно установить
для различных событий функции их
обработки. Обычно обработчик устанавливается
для события Click
(щелчок). Типичные функции обработки
событий для кнопки – Decrease
Value
(уменьшить значение), Increase
Value
(увеличить значение), Set
Value
(установить значение), Set
Bit
(установить бит в единицу), Reset
Bit
(сбросить бит в ноль).
Объект IO
Field
(поле ввода-вывода) также
имеет вид прямоугольника с текстом.
Рассмотрим использование этого объекта
для вывода значения переменной (для
этого его свойству Mode
необходимо установить значение Output).
В свойство Tag
записывается имя тэга, значение которого
будет отображаться. Свойство Format
Type
определяет формат вывода (можно выбрать
формат Decimal
– десятичный, Binary
– двоичный и т.д.). Свойство Format
Pattern
определяет количество символов в
выводимом значении (для вещественных
значений также положение десятичной
точки). Например, если выбрать Format
Pattern
999, то это означает трёхзначное число.
Объект Bar
(полоса) представляет собой графический
индикатор значения переменной (например
типа Int,
Word,
Real)
и может использоваться для того, чтобы
показать динамику изменения этого
значения (рис.25). Объект Bar
имеет шкалу и рабочую область. Значение
переменной показывается заполнением
рабочей области чёрным цветом. Важными
свойствами объекта Bar
являются Tag
(имя тэга связанного с объектом), Maximum
Value
(максимальное значение шкалы –
соответствует заполненной черным цветом
рабочей области), Minimum
Value
(минимальное значение шкалы – соответствует
пустой рабочей области). Кроме этого на
странице окна свойств Properties
/Layout
можно изменить свойства Scale
Position
(положение шкалы) и Bar
Orientation
(ориентация объекта Bar),
а на странице Properties
/Scale
можно определить вид
шкалы, а также убрать отображение шкалы
(сбросив флажок Display
Scale).
Рис.25. Варианты объекта Bar
Создание нового проекта WinCC
Для создания нового проекта в
WinCC
Flexible
предусмотрена команда меню Project
/New.
Однако при выполнении лабораторных
работ эту команду использовать не
следует, поскольку заранее подготовлен
пустой проект с именем WinCC_Empty
(где уде установлены все необходимые
настройки соединения между HMI-панелью
и контроллером). Поэтому, чтобы начать
разработку нового проекта следует
открыть проект WinCC_Empty
и сохранить его в отдельную папку под
другим именем.
Компиляция и загрузка проекта
WinCC
После того, как проект разработан
в среде WinCC
Flexible,
его необходимо откомпилировать, то есть
преобразовать в код для последующей
загрузки в память HMI-панели.
Для полной компиляции всего проекта
используется команда Rebuild
All
из меню Project
/Compiler
(рис.26). Полную компиляцию
следует выполнить, когда проект был
создан первый раз или когда проект был
открыт после работы с другим проектом.
Если полная компиляция уже выполнялась,
а в проект были внесены изменения, то
лучше использовать команду Check
Consistency
из того же меню (выполнение которой
занимает меньше времени).
Рис.26. Команды меню Compiler
При компиляции выводятся различные
сообщения о ходе компиляции. В итоге
должно быть выведено сообщение, что
компиляция прошла успешно. Если проект
содержит ошибки, то будут выведены
сообщения об ошибках, и такой проект
нельзя будет загрузить в память
HMI-панели.
Загрузка проекта осуществляется
следующим образом. Необходимо включить
тумблер питания HMI-панели
и дождаться появления стартового меню.
Сразу же после его появления необходимо
нажать на сенсорную кнопку Transfer.
Панель будет ожидать загрузки нового
проекта. После этого в WinCC
Flexible
следует запустить команду меню Project
/Transfer
/Transfer
settings
(появится окно, показанное на рис.27).
Для запуска процесса
загрузки необходимо щелкнуть мышью по
кнопке Transfer.
После загрузки проекта на
HMI-панели
сразу же отобразится главный экран
проекта, и проект будет готов к выполнению.
Рис.27. Окно загрузки проекта
WinCC
Техника безопасности при
выполнении работы
При выполнении работы студентам
запрещается:
Выполнять любые действия на
стенде, последствия которых неизвестны
или которые не предусмотрены заданием.Самостоятельно включать и
выключать питание стенда.Передвигать оборудование стенда
по столу.Отсоединять любые провода и
кабели на стенде.Запускать на компьютере любые
программы, не относящиеся к лабораторным
работам.
Задание к лабораторной работе
№ 1
«Программирование контроллера
Simatic
S7-300»
Бригаде студентов, выполняющих
лабораторную работу, следует:
1. Ознакомиться с общим устройством
лабораторного стенда и основами
разработки проектов в среде Step-7
Lite.
2. Открыть в Step-7
Lite
проект-заготовку Step7_Empty.
Создать рабочую папку и сохранить в неё
копию проекта Step7_Empty
(лучше под другим именем).
3. Разработать проект в соответствии
с заданием для определённого номера
варианта (указывается преподавателем).
4. Загрузить проект в контроллер
(питание стенда включается преподавателем).
5. Проверить работоспособность
программы контроллера и её соответствие
заданию. Показать результат преподавателю.
6. Ответить на вопросы преподавателя.
7. Обязательно сохранить
разработанный проект. Он понадобится
для следующей работы.
Вариант 1. При
включении переключателя П1 лампы Л1 и
Л2 должны попеременно мигать (сначала
3 секунды горит Л1, затем Л1 гаснет и 3
секунды горит Л2, затем Л2 гаснет и 3
секунды горит Л1 и т.д.). При выключении
переключателя П1 обе лампы Л1 и Л2 должны
погаснуть и больше включаться не должны.
При включении переключателя П2 лампа
Л3 должна мигать (5 секунд включена, 5
секунд выключена и т.д.). На период
включения лампы Л3 должен включаться
двигатель – на него подаётся напряжение
2 В плюс напряжение на аналоговом входе
R
(но не более 8 В). При выключении
переключателя П2 лампа Л3 и двигатель
должны выключиться и больше включаться
не должны.
Вариант 2. При
включении переключателя П1 лампа Л1
должна включаться попеременно с
двигателем (сначала 2 секунды горит Л1,
затем Л1 гаснет и 3 секунды работает
двигатель, затем двигатель останавливается
и снова 2 секунды горит Л1 и т.д.). При
выключении
переключателя П1 лампа Л1 и двигатель
должны выключиться и больше включаться
не должны. При включении одного из
переключателей П2 или П3 лампа Л3 должна
включиться, а затем погаснуть. Время на
которое включается лампа Л3 должно быть
равно 5 секундам, если напряжение на
аналоговом входе R
более 4 вольт, или 3 секундам, если
напряжение на аналоговом входе R
менее 4 вольт. Когда П1 и П2 будут выключены
лампа Л3 должна выключиться и включаться
больше не должна.
Вариант 3. При
включении переключателя П1 лампа Л1
должна включиться с задержкой 2 секунды,
а при выключении
переключателя П1 лампа Л1 должна также
выключиться с задержкой, причем время
задержки должно быть равно целому числу
вольт на аналоговом входе R.
Когда переключатели П2 и П3 оба включены,
двигатель должен работать циклически
(2 секунды на двигатель подаётся напряжение
3 В, следующие 2 секунды – напряжение 6
В и т.д.). В первую половину цикла должна
гореть лампа Л2, а во вторую половину –
лампа Л3. Если ходя бы один из переключателей
П2 или П3 выключен,
двигатель, Л2 и Л3 включаться не должны.
Вариант 4. При
включении любого из переключателей П1,
П2 или П3 лампы Л1 и Л2 должны работать в
мигающем режиме (сначала 2 секунды горит
Л1, затем 4 секунды одновременно горят
Л1 и Л2, затем 2 секунды горит Л2, затем
снова 4 секунды одновременно горят Л1 и
Л2 и т.д.). Если включены все три переключателя
П1, П2, П3, то когда лампы Л1 и Л2 горят
одновременно, должен работать двигатель.
Напряжение, подаваемое на двигатель,
должно быть в 2 раза больше напряжения
на аналоговом входе R,
но не должно превышать 9 В. Если все
переключатели выключены, двигатель и
лампы включаться не должны.
Вариант 5. При
включении переключателя П1 должен
запустится двигатель с задержкой в 2
секунды. Напряжение, подаваемое на
двигатель, должно быть таким же, как
напряжение на аналоговом входе R.
После этого каждое включение и каждое
выключение переключателя П2 должно
увеличивать напряжение на двигателе
на 1 В (вплоть до максимального значения
напряжения 10 В), а каждое включение и
каждое выключение переключателя П3
должно уменьшать напряжение на двигателе
на 0,5 В (вплоть до минимального напряжения
0 В). Изменение напряжения на аналоговом
входе R
должно на такую же величину изменять
напряжение на двигателе. При выключении
переключателя П1 двигатель должен
выключиться с задержкой в 5 секунд.
Задание к лабораторной работе
№ 2
«Программирование панели
человеко-машинного интерфейса TP-177A»
Лабораторная работа № 2 может
быть выполнена только при условии
выполнения лабораторной работы № 1.
Бригаде студентов, выполняющих
лабораторную работу, следует:
1. Повторить общее устройство
лабораторного стенда и ознакомиться с
основами разработки проектов для
HMI-панелей
в среде WinCC
Flexible.
2. Открыть в WinCC
Flexuble
проект-заготовку WinCC_Empty.
Создать рабочую папку и сохранить в неё
копию проекта WinCC_Empty
(лучше под другим именем).
3. Разработать экран HMI-панели
для работы совместно с контроллером по
программе из предыдущей лабораторной
работы. Доработка самой программы
контроллера в Step-7
Lite
также потребуется.
Экран HMI-панели
должен содержать:
Поля вывода состояния ламп и
двигателя (включены или выключены).Сенсорные переключатели (или
кнопки), дублирующие переключатели П1,
П2, П3.Поля вывода значений напряжения
на аналоговом входе R
и напряжения на двигателе в вольтах
(можно использовать объекты Bar).Поясняющие надписи.
4. Загрузить проект WinCC
в панель, а обновленный проект Step-7
в контроллер (питание стенда включается
преподавателем).
5. Проверить совместную работу
контроллера и HMI-панели.
Показать результат преподавателю.
6. Ответить на вопросы преподавателя.
1
Аббревиатура HMI означает
Human Machine Interface, т.е.
человеко-машинный интерфейс.
Как определить размер машинного слова в C / C ++?
Под «размером машинного слова» мы должны предположить, что это означает: наибольший размер фрагмента данных, который ЦП может обработать за одну инструкцию. (Иногда называют шириной шины данных, хотя это упрощает).
На различных ЦП: s, size_t
, uintptr_t
и ptrdiff_t
могут быть любыми — они связаны с шириной шины адреса , а не с шириной данных ЦП. Так что об этих типах можно забыть, они нам ни о чем не говорят.
На всех основных CPU: s, char
всегда 8 бит, short
всегда 16 бит и long long
всегда 64 бит. Остались только интересные типы int
и long
.
Следующие основные ЦП: существуют:
8 бит
int = 16 бит
long = 32 бита
16 бит
int = 16 бит
long = 32 бита
32 бита
int = 32 бита
long = 32 бита
64 бита
int = 32 бита
long = 32 бита
Могут существовать нетрадиционные варианты вышеупомянутого, но, как правило, из вышесказанного нельзя сказать, как отличить 8-битное от 16-битного или 32-битное от 64-битного.
Alignment нам тоже не поможет, потому что он может применяться или не применяться к различным процессорам. Многие процессоры могут нормально читать смещенные слова, но за счет более медленного кода.
Таким образом, невозможно определить «размер машинного слова» с помощью стандарта C.
Однако можно написать полностью переносимый C, который может работать на чем угодно между 8 и 64 битами, используя типы из stdint.h
, особенно типы uint_fast
. Следует иметь в виду следующее:
- Неявные целочисленные рекламные акции в разных системах.Все, что угодно, начиная с
uint32_t
и выше, обычно безопасно и портативно. - Тип по умолчанию для целочисленных констант («литералов»). Чаще всего (но не всегда) это
int
, а значениеint
в данной системе может отличаться. - Выравнивание и заполнение структуры / объединения.
- Размер указателя не обязательно совпадает с размером машинного слова. Особенно актуально на многих 8-, 16- и 64-битных компьютерах.
Сборка
— Почему тип данных C «long» компилируется в два MSP430 «.слово «s?
Размер переменной типа C зависит от выбора авторов для этого компилятора и цели. Не существует фиксированного правила по определению. Для одной (версии) компилятора int может быть 16 бит для одной цели и 32 для другой. Для двух разных компиляторов одной и той же цели можно выбрать 16 бит, другой 32. И размеры не должны совпадать с размерами регистров общего назначения — выбор автора.
В этом суть stdint.h, он в конечном итоге является частью компилятора и связывает точки между размерами 8, 16, 32, 64 и т. Д. И выбранными размерами компилятора для этой цели, конкретной версии gcc для x86 stdint.Предполагается, что h не будет совместим, например, с той же версией gccs msp430 stdint.h.
Кажется, здесь происходит то, что вы описали.
символов (1 байт)
короткий (2 байта)
длинный (4 байта)
длинный длинный (8 байт)
Язык ассемблера специфичен для ассемблера, инструмента, а не цели, автор ассемблера может выбрать любой синтаксис, мнемонику и т. Д., Которые он выберет. Связь с документацией по микросхеме — разумный путь, но для языка ассемблера определенно нет правил.В частности, как вы определяете элементы данных. Здесь видно, что .word означает здесь 16-битное значение, а .byte — 8-битное значение.
2048 = 0x0000 .... 00800
-2048 = 0xFFFF .... FF800
, поэтому, если вы отсечете младшие 8 бит 2048, вы получите 0x00, вы отрежете младшие 16, вы получите 0x0800, младшие 32 вы получите 0x00000800, так что
. Байт 0x00
.word 0x0800
с прямым порядком байтов:
. Слово 0x0800
.word 0x0000
для 8, 16 и 32 бит
В десятичной системе:
.байт 0
.word 2048
.word 2048
.word 0
или
. Слово 2048,0
в зависимости от синтаксиса ассемблера
для отрицательной версии -2048
. Байт 0x00
.word 0xF800
.word 0xF800
.word 0xFFFF
для 8-, 16- и 32-битных версий этого числа
в десятичной системе счисления
. Байт 0
.word -2048
.word -2048
.word -1
и длинный длинный -2048 будет
.слово -2048
.word -1
.word -1
.word -1
или long long -2048 также может быть реализовано как:
. Байт 0
.byte -8
.byte -1
.byte -1
.byte -1
.byte -1
.byte -1
.byte -1
генерируют одни и те же данные в двоичном формате.
Размер слова и типы данныхСлово — это количество данных, которые машина может обработать за один раз. Это вписывается в аналогию с документом, которая включает символы (обычно восемь бит) и страницы (много слов, часто размером 4 или 8 КБ) в качестве других измерений данных.Слово — это целое число байтов, например, один, два, четыре или восемь. Когда кто-то говорит о «n-битах» машины, они обычно имеют в виду размер машинного слова. Например, когда люди говорят, что Pentium — это 32-битный чип, они имеют в виду размер его слова, который составляет 32 бита или четыре байта. Размер регистров общего назначения (GPR) процессора равен размеру его слова. Ширина компонентов в данной архитектуре, например, шине памяти, обычно не меньше ширины слова.Обычно, по крайней мере, в архитектурах, которые поддерживает Linux, адресное пространство памяти равно размеру слова [2] . Следовательно, размер указателя равен размеру слова. Кроме того, размер типа long в C равен размеру слова, тогда как размер типа int иногда меньше, чем размер слова. Например, Alpha имеет размер слова 64 бита. Следовательно, регистры, указатели и длинный тип имеют длину 64 бита. Однако тип int имеет длину 32 бита.Alpha может обращаться к 64-битным словам и управлять ими одновременно.
Каждая поддерживаемая в Linux архитектура определяет BITS_PER_LONG в Стандарт C явно оставляет размер стандартных типов на усмотрение реализаций, хотя и диктует минимальный размер. Неопределенность стандартных типов C в разных архитектурах является одновременно плюсом и минусом.С другой стороны, стандартные типы могут использовать размер слов в различных архитектурах, и для типов не требуется явно указывать размер. Размер типа C long гарантированно будет размером машинного слова. Однако с другой стороны, код не может предполагать, что стандартные типы C имеют какой-либо определенный размер. Более того, нет никакой гарантии, что int имеет тот же размер, что и long. Ситуация становится еще более запутанной, потому что нет необходимости иметь отношение между типами в пространстве пользователя и пространстве ядра.Архитектура sparc64 предоставляет 32-битное пространство пользователя, поэтому указатели, а типы int и long являются 32-битными. Однако в пространстве ядра sparc64 имеет 32-битный тип int, 64-битные указатели и длинные типы. Однако это не норма. Некоторые правила, о которых следует помнить:
Непрозрачные типыНепрозрачные типы данных не раскрывают свой внутренний формат или структуру.Они примерно такие же «черные ящики», как и в C. Для них не так много языковой поддержки. Вместо этого разработчики объявляют typedef, называют его непрозрачным типом и надеются, что никто не вернет его обратно к стандартному типу C. Все использование обычно осуществляется через специальный набор интерфейсов, который создает разработчик. Примером может служить тип pid_t, в котором хранится идентификационный номер процесса. Фактический размер этого типа не разглашается, хотя любой может схитрить, взять пик и убедиться, что это int. Если в коде явно не используется размер этого типа, его можно изменить без особых хлопот.Действительно, когда-то так и было: в старых системах Unix pid_t был объявлен как short. Другой пример непрозрачного типа — atomic_t. Как обсуждалось в главе 9 «Методы синхронизации ядра», этот тип содержит целочисленное значение, которым можно управлять атомарно. Хотя этот тип является int, использование непрозрачного типа помогает гарантировать, что данные используются только в специальных функциях атомарных операций. Непрозрачный тип также помогает скрыть размер типа, который не всегда был полными 32 битами из-за архитектурных ограничений 32-битного SPARC. Другие примеры непрозрачных типов в ядре включают dev_t, gid_t и uid_t. При работе с непрозрачными типами соблюдайте следующие правила:
Особые типыНекоторые данные в ядре, несмотря на то, что они не представлены непрозрачным типом, требуют определенного типа данных.Два примера — это счетчик jiffy и параметр flags, используемый в управлении прерыванием, оба из которых всегда должны храниться в длинном формате без знака. При хранении и манипулировании определенными данными всегда обращайте особое внимание на тип данных, представляющий этот тип, и используйте его. Распространенной ошибкой является сохранение одного из этих значений в другом типе, таком как unsigned int. Хотя это не приведет к проблемам на 32-битных архитектурах, 64-битные машины будут иметь проблемы. Типы с явно заданным размеромЧасто, как программисту, вам нужны данные с явным размером в вашем коде.Обычно это соответствует внешним требованиям, например, к оборудованию, сети или двоичным файлам. Например, звуковая карта может иметь 32-битный регистр, сетевой пакет может иметь 16-битное поле или исполняемый файл может иметь 8-битный файл cookie. В этих случаях тип данных, представляющий данные, должен быть точно подходящего размера. Ядро определяет эти типы данных с явным размером в
Общие сведения о типах данных C — char, int, float, double и voidКак следует из названия, тип данных определяет используемый тип данных .Каждый раз, когда мы определяем переменную или используем какие-либо данные в программе на языке C, мы должны указать тип данных, чтобы компилятор знал, какой тип данных ожидать. Например, вы можете использовать номер , например 1 , 2 , 100 , или десятичную точку , число , например 99.95 , 10,5 , или текст , например «Studytonight» , все эти значения по-разному обрабатываются компилятором языка C , следовательно, мы используем типы данных для определения типа данных, используемых в любой программе. В этом руководстве мы объяснили типы данных, примеры кода см. В руководстве Использование типов данных C. C Типы данныхВ целом, существует 5 различных категорий типов данных в языке C, это:
C Типы первичных данных:Язык C имеет 5 основных (первичных или примитивных) типов данных, это:
Существуют разные ключевые слова для определения этих типов данных, ключевые слова:
Каждый тип данных имеет размер , определенный в битах / байтах , и имеет диапазон для значений, которые эти типы данных могут содержать. Размер различных типов данныхРазмер для разных типов данных зависит от типов компилятора и процессора, короче говоря, он зависит от компьютера, на котором вы используете язык C, и от версии компилятора C, который вы установили. char — это 1 байт Тип данных int может быть 2 байта / 4 байта Существует очень простой способ запомнить размер для типа данных с плавающей запятой составляет 4 байта Тип данных double — это 8 байтов Тип данных В 64 битах 1 бит предназначен для представления знака , 11 бит для экспоненты , а остальные 52 бита используются для мантиссы . Тип данных пусто — 0 байт Тип данных Прежде чем перейти к диапазону значений для этих типов данных, необходимо изучить еще одну важную концепцию — это Модификаторы типов данных . C Модификаторы типов данных:В языке C существует 4 модификатора типа данных , которые используются вместе с основными типами данных для их дальнейшей категоризации. Например, если вы говорите, что есть детская площадка, другой человек будет знать, что есть детская площадка, но вы можете быть более конкретным и сказать, что есть площадка для крикета или площадка для футбола, что делает ее еще более понятной для Другое лицо. Точно так же есть модификаторы в языке C, чтобы сделать первичные типы данных более конкретными. . Ниже приведены модификаторы:
Как следует из названия, знаковые и беззнаковые используются для представления подписанных (+ и -) и беззнаковых (только +) значений для любого типа данных.А long и short влияют на диапазон значений для любого типа данных. Например, signed int , unsigned int , short int , long int и т. Д. — все это допустимые типы данных на языке C. Теперь давайте посмотрим диапазон для различных типов данных, сформированный в результате 5 основных типов данных вместе с модификаторами, указанными выше. C Диапазон значений типа данныхВ приведенной ниже таблице у нас есть диапазон для различных типов данных на языке C.
Как видно из таблицы выше, при различных комбинациях типа данных и модификаторов диапазон значений изменяется. Выполнить код → Когда модификатор типа используется без какого-либо типа данных , то тип данных Что означает
Это немного сложно объяснить, но давайте попробуем. Проще говоря, модификатор Когда компилятор получает числовое значение, он преобразует это значение в двоичное число, что означает комбинацию 0 и 1. Например, 32767 в двоичном формате это 01111111 11111111 , а 1 в двоичном формате — 01 (или 0001) , 2 — это 0010 и т. д. В случае целого числа со знаком , бит наивысшего порядка или первая цифра слева (в двоичном формате) используется в качестве признака знака .Если флаг знака равен 0 , число положительное , а если это 1 , число отрицательное . И поскольку один бит используется для отображения положительного или отрицательного числа, следовательно, для представления самого числа на один бит меньше, следовательно, диапазон меньше. Для подписанное int , 11111111 11111111 означает -32,767 , и поскольку первый бит является флагом знака , чтобы пометить его как отрицательное число, а остальные представляют собой число.Тогда как в случае unsigned int , 11111111 11111111 означает 65 535 . Производные типы данных C:Хотя существует 5 основных типов данных, в языке C есть и производные типы данных, которые используются для хранения сложных данных. Производные типы данных — это не что иное, как первичные типы данных, но немного скрученные или сгруппированные вместе, как массив , структура , объединение , указатели и .Они подробно обсуждаются позже. Заключение:В следующем руководстве мы узнаем о переменных, и там вы узнаете о фактическом использовании типов данных с примерами кода man. Итак, идем дальше. Справка в Интернете — Origin CТипы данных ANSI COrigin C поддерживает все типы данных ANSI C Типы данных: тип charchar, тип shortshort, тип intInteger, тип floatfloat, тип doubledouble и тип возвращаемого значения voidvoid.Кроме того, у вас может быть массив и указатель указателя на каждый из этих типов данных. символьное имя [50]; // Объявить массив символов беззнаковый символ возраста; // Объявление 8-битного целого числа без знака беззнаковый короткий год; // Объявить беззнаковое 16-битное целое число Составные типы данных источника CArray, One-DimensionalArray, Two-Dimensionals Хотя синтаксис C для объявления массива поддерживается, Origin C предоставляет строку строку, вектор вектор и матрицу матричные классы для упрощения работы с типами данных в одно- или двухмерных массивах .Эти типы данных включают char, byte, short, word, int, uint, complex. Вектор может иметь строковый тип для строкового массива arrayString Array, но матрица не может. Матрица может быть только числовой. строка str = "привет, мир \ n"; // Объявление и инициализация строки вектор Еще один полезный класс, предоставляемый Origin C, — это сложный класс . Сложный класс поддерживает числовые данные, содержащие как realComplex, Real Component, так и imaginaryComplex, Imaginary Component. комплексная куб.см (4,5, 7,8); // Объявляем сложное значение. // Реальный компонент установлен на 4.5 и // мнимая составляющая установлена на 7,8 out_complex ("значение =", копия); // Выводим комплексное значение ЦветЦвета в источнике C представлены значением DWORD.Эти значения могут быть индексом во внутренней цветовой палитре OriginColor Palette или фактическим цветом, состоящим из красного, зеленого и синего компонентов. Указатель палитрыВнутренняя палитра Origin содержит 24 цвета. Индекс во внутренней цветовой палитре Origin — это отсчитываемое от нуля значение от 0 до 23. Origin C предоставляет именованные константы для каждого из этих цветов. Каждое имя начинается с префикса SYSCOLOR_, за которым следует название цвета. В следующей таблице перечислены 24 названия цветов и их индексы.
DWORD dwColor = SYSCOLOR_ORANGE; Автоцвет, АвтоцветИмеется специальный индекс цвета, именуемый Auto .При использовании этого индекса элемент будет окрашен в тот же цвет, что и его родительский элемент. Не все элементы поддерживают индекс Auto . См. Графический пользовательский интерфейс Origin для элемента, чтобы определить, поддерживается ли индекс Auto . Макрос INDEX_COLOR_AUTOMATIC используется, когда требуется значение индекса Auto . DWORD dwColor = INDEX_COLOR_AUTOMATIC; RGBЗначение цвета источника также может представлять значение RGB.Значения RGB состоят из 8-битных красных, зеленых и синих компонентов. Эти значения можно легко задать с помощью макроса RGB}. DWORD коричневый = RGB (139,69,19); // седло коричневое Цвет, преобразование RGB в исходный цвет Значения, возвращаемые макросом RGB, не могут быть напрямую использованы в качестве значений исходного цвета. Вам нужно будет использовать макрос RGB2OCOLOR для преобразования значений RGB в значения цвета Origin. DWORD коричневый = RGB2OCOLOR (RGB (139,69,19)); // седло коричневое Цвет, Проверить как значение RGB или индекс палитры Если вам когда-нибудь понадобится узнать, представляет ли значение цвета Origin значение RGB или индекс в палитре, вы можете использовать макрос OCOLOR_IS_RGB.Этот макрос возвращает истину, если значение представляет собой значение RGB, и возвращает ложь в противном случае. если (OCOLOR_IS_RGB (ocolor)) out_str («значение цвета представляет собой цвет RGB»); еще out_str («значение цвета представляет индекс цвета»); Цвет, извлечение одного цвета из RGB После того, как вы определите, что значение цвета Origin представляет значение RGB, вы можете использовать макрос GET_CRF_FROM_RGBOCOLOR для извлечения значения RGB из значения цвета Origin. если (OCOLOR_IS_RGB (ocolor)) { DWORD rgb = GET_CRF_FROM_RGBOCOLOR (цвет); printf ("красный =% d, зеленый =% d, синий =% d \ n", GetRValue (RGB), GetGValue (RGB), GetBValue (RGB)); }
Преобразования типов данных для вызовов API из Visual BasicПреобразования типов данных для вызовов API из Visual BasicВведение Функции Visual Basic и Windows API используют разные имена для определенных типов данных. Сводка типов Это список наиболее распространенных типов данных, которые можно найти в объявлениях API.Большинство этих имен являются псевдонимами стандартных целочисленных типов.
ОсобенностиCOLORREF Значение COLORREF представляет собой комбинацию красного, зеленого и синего цветов.Visual Basic использует OLE_COLOR , который также может хранить идентификаторы системных цветов. DWORD, WORD Очень часто эти типы можно рассматривать как значения Long . Струны Строки автоматически преобразуются в их эквивалент в стиле C.Передайте их как ByVal , переменную As String. Указатели Указатели — это специальные типы, в которых хранится место в памяти переменной. Указатели функций Указатель на функцию можно передать с помощью Беззнаковые типы Такие языки, как C и C ++, поддерживают так называемые «беззнаковые типы». Это дает возможность хранить большие положительные значения в типе данных. |