Sub OpenFormAndWait()
' Open the form in dialog mode
DoCmd.OpenForm "YourFormName", WindowMode:=acDialog
' Code here will execute after the form is closed
MsgBox "The form has been closed. Continuing with the code..."
End Sub
from copilot help
Keep document that easy to find
Sub OpenFormAndWait()
' Open the form in dialog mode
DoCmd.OpenForm "YourFormName", WindowMode:=acDialog
' Code here will execute after the form is closed
MsgBox "The form has been closed. Continuing with the code..."
End Sub
VBA
Sub SendJsonData()
On Error GoTo ErrorHandler
' Create an object for ServerXMLHTTP
Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")
' Define the URL where the data will be sent
Dim url As String
url = "https://192.168.0.88/xampp/API/P1.php" ' Modify the URL accordingly
' Create the JSON Payload
Dim jsonData As String
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'jsonData = "{""name"":""John"",""value"":30}"
For i = 2 To lastRow
jsonData = "{""name"":""" & ws.Cells(i, 1).Value & """, ""value"":""" & ws.Cells(i, 2).Value & """}"
If i < lastRow Then
jsonData = jsonData & ","
End If
Next i
' Set the Method and open the connection
xmlhttp.Open "POST", url, False
' Bypass SSL Certificates validation (for self-signed certificates only)
xmlhttp.setOption 2, 13056 ' Ignore SSL certificate errors
' Set HTTP Header to indicate that the data is JSON
xmlhttp.setRequestHeader "Content-Type", "application/json"
' Send the JSON data
xmlhttp.send jsonData
' Check the status of the request
If xmlhttp.Status = 200 Then
MsgBox "Data sent successfully: " & xmlhttp.responseText
Else
MsgBox "Error: " & xmlhttp.Status & " - " & xmlhttp.statusText
End If
' Close the connection
Set xmlhttp = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error occurred: " & Err.Description
End Sub
PHP
<?php
// ตั้งค่า Header เพื่อระบุว่าคำตอบเป็น JSON และอนุญาตการเชื่อมต่อ CORS (ถ้าจำเป็น)
header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");
// ข้อมูลการเชื่อมต่อฐานข้อมูล MySQL
$servername = "192.168.0.88"; // หรือ IP ของเซิร์ฟเวอร์ฐานข้อมูล
$username = "prapop"; // ชื่อผู้ใช้ MySQL (เปลี่ยนตามจริง)
$password = ""; // รหัสผ่านของ MySQL (เปลี่ยนตามจริง)
$dbname = "test"; // ชื่อฐานข้อมูล
// สร้างการเชื่อมต่อฐานข้อมูล
$conn = new mysqli($servername, $username, $password, $dbname);
// ตรวจสอบการเชื่อมต่อ
if ($conn->connect_error) {
die(json_encode([
'status' => 'error',
'message' => 'Connection failed: ' . $conn->connect_error
]));
}
// ตรวจสอบว่าคำขอเป็น POST หรือไม่
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// รับข้อมูล JSON ที่ส่งมา
$json = file_get_contents('php://input');
// แปลง JSON ให้เป็น Array หรือ Object
$data = json_decode($json, true);
// ตรวจสอบว่าการแปลงสำเร็จหรือไม่
if ($data === null) {
// กรณีที่ข้อมูล JSON ไม่ถูกต้อง
echo json_encode([
'status' => 'error',
'message' => 'Invalid JSON'
]);
} else {
// เข้าถึงข้อมูลที่ส่งมา
$name = $data['name'];
$value = $data['value'];
// เตรียมคำสั่ง SQL สำหรับบันทึกข้อมูล
// ตรวจสอบว่า prepare สำเร็จหรือไม่
$stmt = $conn->prepare("INSERT INTO T1 (name, value) VALUES (?, ?)");
if ($stmt === false) {
die(json_encode([
'status' => 'error',
'message' => 'Prepare failed: ' . $conn->error
]));
}
$stmt->bind_param("si", $name, $value); // ผูกตัวแปรเพื่อป้องกัน SQL Injection
// ตรวจสอบการบันทึกข้อมูล
if ($stmt->execute()) {
// สำเร็จ
echo json_encode([
'status' => 'success',
'message' => 'Data inserted successfully',
'name' => $name,
'value' => $value
]);
} else {
// เกิดข้อผิดพลาด
echo json_encode([
'status' => 'error',
'message' => 'Error inserting data: ' . $stmt->error
]);
}
// ปิด statement
$stmt->close();
}
} else {
// กรณีที่ไม่ใช่คำขอแบบ POST
echo json_encode([
'status' => 'error',
'message' => 'Only POST requests are allowed'
]);
}
// ปิดการเชื่อมต่อฐานข้อมูล
$conn->close();
?>
MYSQL
CREATE TABLE T1 (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
value VARCHAR(255) NOT NULL
);
ติดตั้ง OpenCV v.4.5.1 เพื่อรันบน CUDA GPU บน Windows 10 ด้วยการ makefile มาเริ่มกันเลยครับ
1.ขั้นตอนการเตรียมความพร้อมของระบบ
1.1 เตรียมความพร้อมของระบบโดยทำการติดตั้ง package ต่อไปนี้ก่อน
สามารถดูได้จากบทความ การติดตั้ง TensorFlow GPU v. 2.4.1 Python 3.8 บน Windows 10 แบบง่าย
1.2 ติดตั้ง CMake ในบทความนี้ใช้ cmake-3.19.4-win64-x64.msi
1.3 สร้างโฟรเดอร์สำหรับ build project ในที่นี้จะสร้างไว้ที่ OpenCV-Build
1.4 Download OpenCV 4.5.1 Source จากเว็ป https://opencv.org/releases/ และทำการแตกไฟล์ไว้ที่พาธ OpenCV-Build
1.5 Download opencv_contrib จากเว็ป https://github.com/opencv/opencv_contrib และทำการแตกไฟล์ไว้ที่พาธ OpenCV-Build
2.ติดตั้ง OpenCV 4.5.1 for CUDA GPU
2.1 สร้างโฟลเดอร์ build และ install ไว้ที่พาธ C:\OpenCV-Build
2.2 เปิดโปรแกรม CMake
- กำหนดพาธ Where is the source code: ไว้ที่ C:/OpenCV-Build/opencv-4.5.1
- กำหนดพาธ Where to build the binaries: ไว้ที่ C:/OpenCV-Build/build
- ติ๊กช่อง Grouped
2.3 ที่ Configure > Optional platform for generator เลือก x64
2.4 หากสำเร็จจะได้ผลลัพธ์ตามรูปที่ 7.
2.5 ค้นหาและเลือกตรงช่อง WITH_CUDA
2.6 ค้นหาและเลือกตรงช่อง BUILD_opencv_dnn
2.7 ค้นหาและเลือกตรงช่อง OPENCV_DNN_CUDA
2.8 ค้นหาและเลือกตรงช่อง ENABLE_FAST_MATH
2.9 ค้นหาและเลือกตรงช่อง BUILD_opencv_world
2.10 ให้แน่ใจว่า ได้เลือกทั้งสามตัวนี้แล้ว BUILD_opencv_python3, BUILD_opencv_python_bindings_generator, BUILD_opencv_python_tests
2.11 กำหนดพาธ ตรงช่อง OPENCV_EXTRA_MODULES_PATH
เป็น C:/OpenCV-Build/opencv_contrib-4.5.1/modules กด Configure
2.12 หลังจากนั้น ให้ค้นหาและเลือกตรงช่อง CUDA_FAST_MATH
2.13 หลังจากนั้น ให้ค้นหาและเลือกตรงช่อง CUDA_ARCH_BIN
ค้นหารุ่นการ์ดจอด้วยคำสั่ง
nvidia-smi
ในที่นี้ใช้ GeForce GTX 1650 ตามรูปที่ 17
จากนั้นให้ไปที่เว็ป https://en.wikipedia.org/wiki/CUDA เพื่อค้นหา Compute
capability (version)
ในที่นี้คือค่า 7.5 นำไปใส่ในช่อง CUDA_ARCH_BIN ดังรูปที่ 19
2.14 ค้นหาและเลือกตรงช่อง CMAKE_INSTALL_PREFIX
แล้วแก้ไขพาธเป็น C:/OpenCV-Build/install ดังรูปที่ 20
2.15 ค้นหาและเลือกตรงช่อง CMAKE_CONFIGURATION_TYPES ลบ Debug ออก เหลือแค่ Releaseดังรูปที่ 21. กด Configure
2.16 จะได้ผลลัพธ์ตามรูปที่ 22 จากนั้นกดปุ่ม Generate
2.17 เปิด Command prompt (Run as administrator) และรันคำสั่งนี้
"C:\Program Files\CMake\bin\cmake.exe" --build "C:\OpenCV-Build\build" --target INSTALL --config Release
ซึ่งขั้นตอนนี้จะใช้เวลานานพอสมควร รอจนกว่าจะเสร็จสิ้นกระบวนการ
หลังจากที่รอกันมานานนม เราก็จะสามารถใช้งาน OpenCV v4.5.1 ได้แล้ว โดยรันคำสั่ง
python
import cv2
print(cv2.__version__)
จะได้ผลลัพธ์การรัน OpenCV บน base environment ดังรูป
++ Special plus การติดตั้ง OpenCV บน environment อื่น !!
conda -n opencv-gpu python==3.8
conda activate opencv-gpu
ที่ CMake กำหนดค่า python3 ให้ชี้ไปที่พาธที่สร้าง environment ไว้ กด Configure, Gennerate และทำขั้นตอนที่ 2.17 อีกครั้ง
จะได้ผลลัพธ์ดังรูป ขอขอบคุณทุกท่านที่อ่านมาถึงตรงนี้ หวังว่าคงจะมีประโยชน์ไม่มากก็น้อยนะครับ ในบทต่อไป เราจะมารันโปรแกรมที่ใช้ OpenCV บน GPU กันต่อครับ ขอบคุณครับ
CR
1. https://amornpan.medium.com/build-and-install-opencv-4-5-1-with-cuda-gpu-%E0%B8%9A%E0%B8%99-windows-10-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%A5%E0%B8%B0%E0%B9%80%E0%B8%AD%E0%B8%B5%E0%B8%A2%E0%B8%94%E0%B8%A2%E0%B8%B4%E0%B8%9A-5751c56e8c5c
2. https://www.youtube.com/watch?v=YsmhKar8oOc
3. https://jordanbenge.medium.com/anaconda3-opencv-with-cuda-gpu-support-for-windows-10-e038569e228
--3. was useful--
4. if install new python need to --> pip install numpy
5.dnn lib copy lib match version into cuda vX.X